On Mon, Jun 23, 2008 at 4:56 PM, wskent <[EMAIL PROTECTED]> wrote:
>
> 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)
This error seems to indicate you have @Version on a type that doesn't allow
incrementing. I'd try a Long or an Integer. If it already is one of those,
you might want to check your database schema and see what type is being used
there.
Matt
>
> 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]
>
>