Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
I have a @Stateful bean which has @AfterBegin & @BeforeCompletion callbacks defined. It tries to persist a JPA entity in each one of them:
@Stateful public class SessionBean implements Serializable { public static final int ID_AFTER_BEGIN = 1234; public static final int ID_BEFORE_COMPLETION = 5678; public static final int ID_TX_ENTITY = 9999; @PersistenceContext EntityManager em; @AfterBegin public void afterBegin() { final TestEntity entity = new TestEntity(ID_AFTER_BEGIN, "On AFTER_BEGIN"); em.persist(entity); if(null == em.find(TestEntity.class, ID_AFTER_BEGIN)){ throw new IllegalStateException("Entity not persisted in AFTER_BEGIN"); } } @BeforeCompletion public void beforeCompletion() { final TestEntity entity = new TestEntity(ID_BEFORE_COMPLETION, "On BEFORE_COMPLETION"); em.persist(entity); if(null == em.find(TestEntity.class, ID_BEFORE_COMPLETION)){ throw new IllegalStateException("Entity not persisted in BEFORE_COMPLETION"); } } @TransactionAttribute(TransactionAttributeType.REQUIRED) public void txRequired() { final TestEntity entity = new TestEntity(ID_TX_ENTITY, "On TX_REQUIRED"); em.persist(entity); if(null == em.find(TestEntity.class, ID_TX_ENTITY)){ throw new IllegalStateException("Entity not persisted in TX_REQUIRED"); } } }
During the transaction everything seems fine, but after the transaction EntityManger.find() returns null for the bean persisted during @BeforeCompletion
I've attached sample app that reproduces the issue.
Expected result:
The output does not contain any failed tests.
Actual result:
TESTING TX_REQUIRED WITHOUT EXISTING TRANSACTION [TEST FAILED] Expecting entity for BEFORE_COMPLETION instead of: null
PS: I observe a similar issue for @AfterBegin in another case, but I'm not able to extract a reproducible test case from it. But I thinkthe two issues are linked
Attachments
Attachments
Issue Links
- links to