Skip to content

HibernateTemplate.load does not throw ObjectRetrievalFailureException [SPR-1164] #5866

Closed
@spring-projects-issues

Description

@spring-projects-issues

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

Metadata

Metadata

Assignees

Labels

in: coreIssues in core modules (aop, beans, core, context, expression)status: declinedA suggestion or change that we don't feel we should currently apply

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions