How do I do this? Due to my annotations every action other than a delete should be cascaded so I have tried the following before my loop;
Code:
getHibernateTemplate().refresh( person )
This one gives me a StackOverflowError, infinite loop maybe?...
Quote:
java.lang.StackOverflowError
at java.util.HashMap.hash(Unknown Source)
at java.util.HashMap.get(Unknown Source)
at org.hibernate.impl.SessionFactoryImpl.getCollectionPersister(SessionFactoryImpl.java:575)
at org.hibernate.engine.Cascades.cascadeAssociation(Cascades.java:786)
at org.hibernate.engine.Cascades.cascade(Cascades.java:720)
at org.hibernate.engine.Cascades.cascade(Cascades.java:847)
at org.hibernate.engine.Cascades.cascade(Cascades.java:819)
at org.hibernate.event.def.DefaultRefreshEventListener.onRefresh(DefaultRefreshEventListener.java:85)
at org.hibernate.impl.SessionImpl.refresh(SessionImpl.java:679)
at org.hibernate.engine.Cascades$3.cascade(Cascades.java:112)
at org.hibernate.engine.Cascades.cascadeAssociation(Cascades.java:771)
at org.hibernate.engine.Cascades.cascade(Cascades.java:720)
at org.hibernate.engine.Cascades.cascade(Cascades.java:847)
at org.hibernate.engine.Cascades.cascade(Cascades.java:819)
... goes on a few more times
Code:
getHibernateTemplate().merge( person )
This one gets really confusing...
Quote:
org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [model.SalesPerson#112]; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [model.SalesPerson#112]
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.opera.interview.model.SalesPerson#112]
at org.hibernate.persister.entity.BasicEntityPersister.check(BasicEntityPersister.java:1441)
at org.hibernate.persister.entity.BasicEntityPersister.update(BasicEntityPersister.java:1986)
at org.hibernate.persister.entity.BasicEntityPersister.updateOrInsert(BasicEntityPersister.java:1909)
at org.hibernate.persister.entity.BasicEntityPersister.update(BasicEntityPersister.java:2149)
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:75)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:137)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:394)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:316)
at org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate(HibernateTemplate.java:627)
at persistence.SalesPersonDaoHibernate.removeSalesperson(SalesPersonDaoHibernate.java:58)
Code:
getHibernateTemplate().persist( person )
This one really has me stumped as I have an assertNotNull( person ) in my test case just before calling this method...
Quote:
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: null; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: null
org.hibernate.PersistentObjectException: detached entity passed to persist: null
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:525)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:529)
at org.springframework.orm.hibernate3.HibernateTemplate$21.doInHibernate(HibernateTemplate.java:662)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:315)
at org.springframework.orm.hibernate3.HibernateTemplate.persist(HibernateTemplate.java:659)
at persistence.SalesPersonDaoHibernate.removeSalespersonWorking(SalesPersonDaoHibernate.java:46)
Code:
getHibernateTemplate().saveOrUpdate( person )
This gives the original ConstraintViolationException :-(
I'm obviously doing something seriously wrong here...any further ideas?
Thanks for your help so far.
Jon