Anyone have any ideas why I would be getting the following
NullPointerException on the flush() in BaseDaoTestCase?
DEBUG [main] RoleDaoTest.testUpdateRole(11) | testUpdateRole()...
DEBUG [main] RoleDaoHibernate.getRoleByName(44) | getRoleByName: from Role
where name='ROLE_USER'
DEBUG [main] SQL.log(401) | select role0_.ID as ID1_, role0_.version as
version1_, role0_.NAME as NAME1_, role0_.DESCRIPTION as DESCRIPT4_1_ from
GDEV.TGADATA.ROLE role0_ where role0_.NAME=?
Hibernate: select role0_.ID as ID1_, role0_.version as version1_,
role0_.NAME as NAME1_, role0_.DESCRIPTION as DESCRIPT4_1_ from
GDEV.TGADATA.ROLE role0_ where role0_.NAME=?
DEBUG [main] RoleDaoHibernate.save(97) | role's id: 2
DEBUG [main] RoleDaoHibernate.save(106) | Ignoring NullPointerException for
flush()
ERROR [main] RoleDaoTest.flush(70) | Error: null
java.lang.NullPointerException
at org.hibernate.type.IntegerType.next(IntegerType.java:59)
at org.hibernate.engine.Versioning.increment(Versioning.java:108)
at
org.hibernate.event.def.DefaultFlushEntityEventListener.getNextVersion(DefaultFlushEntityEventListener.java:365)
at
org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:257)
at
org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:128)
at
org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
at
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at
org.springframework.orm.hibernate3.HibernateTemplate$27.doInHibernate(HibernateTemplate.java:818)
at
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373)
at
org.springframework.orm.hibernate3.HibernateTemplate.flush(HibernateTemplate.java:816)
at
com.centricgroup.core.dao.BaseDaoTestCase.flush(BaseDaoTestCase.java:67)
at
com.centricgroup.core.dao.RoleDaoTest.testUpdateRole(RoleDaoTest.java:15)
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:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at
org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:76)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
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)
DEBUG [main] RoleDaoHibernate.getRoleByName(44) | getRoleByName: from Role
where name='ROLE_USER'
ERROR [main] RoleDaoHibernate.getRoleByName(63) | NPE Error: null
Here is the pertinent part of the Test class -
public class RoleDaoTest extends BaseDaoTestCase {
private RoleDao roleDao;
public void testUpdateRole() throws Exception {
log.debug("testUpdateRole()...");
Role role = roleDao.getRoleByName("ROLE_USER");
role.setDescription("test descr");
roleDao.save(role);
flush();
role = roleDao.getRoleByName("ROLE_USER");
assertEquals("test descr", role.getDescription());
}
Here is the BaseDaoTestCase
public class BaseDaoTestCase
extends AbstractTransactionalDataSourceSpringContextTests {
...
protected void flush() {
try {
HibernateTemplate hibernateTemplate =
new HibernateTemplate((SessionFactory)
applicationContext.getBean("sessionFactory1"));
hibernateTemplate.flush();
hibernateTemplate.clear();
} catch(NullPointerException npe) {
log.error("Error: " + npe.getMessage());
npe.printStackTrace();
}
}
Here is the Hibernate DAO implementation -
public class RoleDaoHibernate extends HibernateDaoSupport
implements RoleDao {
...
public Role getRoleByName(String rolename) {
try {
List roles = getHibernateTemplate().find("from Role where
name=?",
rolename);
if (roles.isEmpty()) {
return null;
} else {
return (Role) roles.get(0);
}
} catch(SQLGrammarException sge) {
log.error("SQL Grammar Error: " + sge.getMessage());
sge.printStackTrace();
return null;
} catch(NullPointerException npe) {
log.error("NPE Error: " + npe.getMessage());
npe.printStackTrace();
return null;
}
}
*Note - The hibernate dialect is DB2400
THX,
--
View this message in context:
http://www.nabble.com/NullPointerException-in-flush%28%29-tp18080211s2369p18080211.html
Sent from the AppFuse - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]