Details
-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
Documentation (Ref Guide, User Guide, etc.), Release Notes, Interactive Demo/Tutorial, Compatibility/Configuration
-
Medium
Description
Description of problem:
I got an issue in a salesforce case [1] about an incorrect injection.
[1] https://c.na7.visual.force.com/apex/Case_View?id=500A000000CRqDG&sfdc.override=1
Version-Release number of selected component (if applicable):
How reproducible:
To reproduce the case is required to have two PersistentUnit (PU), a Abstract class with a setter method to inject one PU and others classes inheriting the Abstract class and overriding the setter method to inject a different PU. In the runtime, the container inject twice the PU, first the correct PU and then the PU described in super class.
I talked with the client (who is a Red Hat consultant) and we made the attached project based on a very simple JBoss example to reproduce the issue which happens in EAP6. I put a lot of 'println' to be very clear (even printing stacktrace to show who is calling). The most important files are:
-> hibernate4Test/src/main/java/org/jboss/as/quickstart/hibernate4/data/BaseDAO.java – The abstract class with the default PU injection
-> hibernate4Test/src/main/java/org/jboss/as/quickstart/hibernate4/data/MemberRepository.java – BaseDAO subclass
-> hibernate4Test/src/main/java/org/jboss/as/quickstart/hibernate4/data/SecondaryMemberRepository.java – BaseDAO subclass
-> hibernate4Test/src/main/java/org/jboss/as/quickstart/hibernate4/data/MemberListProducer.java – The class which inject the MemberListProducer and SecondaryMemberRepository
-> hibernate4Test/src/main/resources/META-INF/persistence.xml – We changed the configuration here to each PU have a different entity mapped
Steps to Reproduce:
Actual results:
The EM injection occurs twice, which the last one the wrong EM.
Expected results:
Just one injection occurs.
Additional info: