HibernateTemplate.load does not throw ObjectRetrievalFailureException [SPR-1164] #5866
Labels
in: core
Issues in core modules (aop, beans, core, context, expression)
status: declined
A suggestion or change that we don't feel we should currently apply
Eduardo Rocha opened SPR-1164 and commented
I have a test similar with HibernateTemplateTests, but not using mocks for Hibernate classes, but concrete classes. I have this test:
1 try {
2 Piloto piloto = dao.findById(1);
3 fail("piloto obtido=[" + piloto.toString() + "]");
4 } catch (ObjectRetrievalFailureException e) {
5 assertEquals(1, e.getIdentifier());
6 assertEquals(Piloto.class, e.getPersistentClass());
7 }
for the code:
public Piloto findById(int id) {
return (Piloto) getHibernateTemplate().load(Piloto.class, id);
}
The database is empty.
The test fails AFTER findByid (#2), because the dao seems to use lazy loading, and an exception is throw when a call is made to "piloto.toString()" (#3):
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [dominio.Piloto#1]
at org.hibernate.ObjectNotFoundException.throwIfNull(ObjectNotFoundException.java:27)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:121)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:78)
at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:649)
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:60)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:85)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:131)
at br.com.erocha.formula.dominio.Piloto$$EnhancerByCGLIB$$4514e186.toString(<generated>)
at br.com.erocha.formula.infraestrutura.dao.hibernate.HibernatePilotoDaoImplTest.testFindByIdPilotoInexistente(HibernatePilotoDaoImplTest.java:113)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Affects: 1.2.1
The text was updated successfully, but these errors were encountered: