I have a stateful session bean that uses other stateless session beans via their remote interfaces. The stateless session beans use EJB3 persistence. Now I have this scenario:
Application bean (stateful):
Resource resource = securityManager_.createResource(admin); return folderManager_.createRootFolder(resource);
@PersistenceContext private EntityManager em_; public Resource createResource(User owner) throws SecurityException { Resource resource = new Resource(owner); em_.persist(resource); return resource; }
@PersistenceContext private EntityManager em_; public Folder createRootFolder(Resource resource) throws FolderException { // this instruction causes the exception em_.refresh(resource); // code omitted }
Stack Trace:
* org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:567)
* org.hibernate.ejb.AbstractEntityManagerImpl.refresh(AbstractEntityManagerImpl.java:239)
* org.jboss.ejb3.entity.TransactionScopedEntityManager.refresh(TransactionScopedEntityManager.java:193)
* net.sf.adigres.foldermanager.FolderManagerBean.createRootFolder(FolderManagerBean.java:88)
* ....
Caused by: org.hibernate.HibernateException: this instance does not yet exist as a row in the database
* org.hibernate.event.def.DefaultRefreshEventListener.onRefresh(DefaultRefreshEventListener.java:90)
* org.hibernate.event.def.DefaultRefreshEventListener.onRefresh(DefaultRefreshEventListener.java:39)
* org.hibernate.impl.SessionImpl.fireRefresh(SessionImpl.java:895)
* org.hibernate.impl.SessionImpl.refresh(SessionImpl.java:879)
* org.hibernate.ejb.AbstractEntityManagerImpl.refresh(AbstractEntityManagerImpl.java:233)
* ... 106 more
Correction: I have a stateful session bean that uses other stateless session beans via their local interfaces.
... but it makes no difference.