public void testGet(){
Session session=null;
try {
session=HibernateUtil.getSession();
session.beginTransaction();
User user=(User)session.get(User.class," fb8425ea424239b501424239b8030001");
System.out.println(user.getName());
user.setName("王五");
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally{
HibernateUtil.closeSession(session);
}

}
数据库中有这条记录运行是的异常
Hibernate: select user0_.id as id0_0_, user0_.name as name0_0_, user0_.password as password0_0_, user0_.createTime as createTime0_0_, user0_.expireTime as expireTime0_0_ from User user0_ where user0_.id=?
java.lang.NullPointerException
at zhang.junit.test.SessionTest.testGet(SessionTest.java:88)
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:597)
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 org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

解决方案 »

  1.   

    " fb8425ea424239b501424239b8030001"    有一个多余的空格。
      

  2.   

    不是空格的问题,我用单步运行了发现每次取得session的时候数据库中的数库中的数据就没有了。
    这是运行前的数据库中的情况我发现每次运行了session=HibernateUtil.getSession();这句之后在数据库中再查就没有了数据
    这是为啥啊?
      

  3.   


    这太神奇了
    会不会是你插入的数据还没有持久化啊
    用getHibernateTemplate().get()试试