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]
>
>

Reply via email to