[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-4880) EntityManager.refresh does not throw EntityNotFoundException for removed entity
Scott Marlow (JIRA)
noreply at atlassian.com
Thu Feb 4 09:10:29 EST 2010
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-4880?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Scott Marlow updated HHH-4880:
------------------------------
Priority: Blocker (was: Major)
Fix Version/s: 3.5
Changed to blocker as this breaks the jpa EntityManager api (applications won't get EntityNotFoundException as expected).
> EntityManager.refresh does not throw EntityNotFoundException for removed entity
> -------------------------------------------------------------------------------
>
> Key: HHH-4880
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4880
> Project: Hibernate Core
> Issue Type: Bug
> Components: entity-manager
> Affects Versions: 3.5.0-Beta-4
> Environment: Hibernate 3.5.0-Beta-4, JBoss AS trunk (from which 6.0.0.M2 will be released), Sun Java 1.6
> Reporter: jaikiran
> Assignee: Gail Badner
> Priority: Blocker
> Fix For: 3.5
>
>
> The EntityManager.refresh method says this:
> /**
> * Refresh the state of the instance from the database,
> * overwriting changes made to the entity, if any.
> *
> * @param entity
> * @throws IllegalStateException if this EntityManager has been closed
> * @throws IllegalArgumentException if not an entity
> * or entity is not managed
> * @throws TransactionRequiredException if invoked on a
> * container-managed entity manager of type
> * PersistenceContextType.TRANSACTION and there is
> * no transaction.
> * @throws EntityNotFoundException if the entity no longer
> * exists in the database
> */
> public void refresh(Object entity);
> JBoss EJB3 testsuite has a testcase which currents tests that this method works as expected http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/trunk/testsuite/src/test/java/org/jboss/ejb3/test/regression/ejbthree290/unit/Ejb290UnitTestCase.java
> In short, the testcase does this:
> MyEntity e = manager.find(MyEntity.class, id);
> local.removeEntity(e.id);
> try
> {
> manager.refresh(e);
> }
> catch (EntityNotFoundException e1)
> {
> return; // correct
> }
> Starting 3.5.0-beta-4 of hibernate, this test fails with the following (unexpected) exception:
> Caused by: org.hibernate.AssertionFailure: object must be non-null.
> at org.hibernate.engine.StatefulPersistenceContext.setReadOnly(StatefulPersistenceContext.java:1340)
> at org.hibernate.impl.SessionImpl.setReadOnly(SessionImpl.java:1982)
> at org.hibernate.event.def.DefaultRefreshEventListener.onRefresh(DefaultRefreshEventListener.java:154)
> at org.hibernate.event.def.DefaultRefreshEventListener.onRefresh(DefaultRefreshEventListener.java:62)
> at org.hibernate.impl.SessionImpl.fireRefresh(SessionImpl.java:1108)
> at org.hibernate.impl.SessionImpl.refresh(SessionImpl.java:1088)
> at org.hibernate.ejb.AbstractEntityManagerImpl.refresh(AbstractEntityManagerImpl.java:660)
> at org.hibernate.ejb.AbstractEntityManagerImpl.refresh(AbstractEntityManagerImpl.java:636)
> at org.jboss.jpa.impl.tx.TransactionScopedEntityManager.refresh(TransactionScopedEntityManager.java:224)
> at org.jboss.ejb3.test.regression.ejbthree290.DAOBean.findAndDelete(DAOBean.java:58)
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list