|
From: Sergey V. (JIRA) <no...@at...> - 2006-06-30 14:33:29
|
org.hibernate.TransientObjectException: object references an unsaved transient
-------------------------------------------------------------------------------
Key: HHH-1870
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1870
Project: Hibernate3
Type: Bug
Environment: Hibernate 3.2.0 RC 2 from SVN tunk 2006/06/30
Reporter: Sergey Vladimirov
Attachments: manytoonelazy.zip, patch.txt
JUnit test case shows strange error on commit():
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
BeanB beanB = new BeanB();
beanB.setId(1);
session.save(beanB);
beanB = (BeanB) session.load(BeanB.class, 1);
BeanA beanA = new BeanA();
beanA.setId(2);
beanA.setParent((BeanB) session.load(BeanB.class, 1));
session.save(beanA);
transaction.commit();
session.close();
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: ru.arptek.arpsite.data.manytoonelazy.BeanA.parent -> ru.arptek.arpsite.data.manytoonelazy.BeanB
at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:273)
at org.hibernate.engine.Cascade.cascade(Cascade.java:257)
at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:131)
at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:121)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JTATransaction.commit(JTATransaction.java:135)
at ru.arptek.arpsite.data.manytoonelazy.TestWithoutCache.testFind(TestWithoutCache.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Temporary patch included. May be it is brokes other issue.
--
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
|
|
From: Assaf B. (JIRA) <no...@at...> - 2006-07-05 09:10:00
|
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1870?page=comments#action_23535 ] Assaf Berg commented on HHH-1870: --------------------------------- You might need to force a session flush between saving B and saving A in case the association doesn't have cascade. The load would probably not cause a flush because B is already in the session cache. > org.hibernate.TransientObjectException: object references an unsaved transient > ------------------------------------------------------------------------------- > > Key: HHH-1870 > URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1870 > Project: Hibernate3 > Type: Bug > Environment: Hibernate 3.2.0 RC 2 from SVN tunk 2006/06/30 > Reporter: Sergey Vladimirov > Attachments: manytoonelazy.zip, patch.txt > > > JUnit test case shows strange error on commit(): > Session session = sessionFactory.openSession(); > Transaction transaction = session.beginTransaction(); > BeanB beanB = new BeanB(); > beanB.setId(1); > session.save(beanB); > beanB = (BeanB) session.load(BeanB.class, 1); > BeanA beanA = new BeanA(); > beanA.setId(2); > beanA.setParent((BeanB) session.load(BeanB.class, 1)); > session.save(beanA); > transaction.commit(); > session.close(); > org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: ru.arptek.arpsite.data.manytoonelazy.BeanA.parent -> ru.arptek.arpsite.data.manytoonelazy.BeanB > at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:273) > at org.hibernate.engine.Cascade.cascade(Cascade.java:257) > at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:131) > at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:121) > at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65) > at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26) > at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) > at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) > at org.hibernate.transaction.JTATransaction.commit(JTATransaction.java:135) > at ru.arptek.arpsite.data.manytoonelazy.TestWithoutCache.testFind(TestWithoutCache.java:57) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at junit.framework.TestCase.runTest(TestCase.java:154) > at junit.framework.TestCase.runBare(TestCase.java:127) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128) > at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) > at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) > Temporary patch included. May be it is brokes other issue. -- 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 |