ロードとゲットの違いを理解できません。次のコードはsession.loadを与えるとうまくいきません。それはヌルポインタ例外を与えます。しかし、私はsession.get()を使っているときも同じことができます。セッションを理解しています。ハイバネートのsession.loadメソッド
public Employee getEmployee(final String id){
HibernateCallback callback = new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException,SQLException {
//return (Employee)session.load(Employee.class, id); doesn't work
return (Employee)session.get(Employee.class, id); //it works
}
};
return (Employee)hibernateTemplate.execute(callback);
}
私はまた、SessionオブジェクトがdoInHibernateに渡されるかを理解したいと思いますか。?
セッションはいつ開始され、終了するのですか?
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:781)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:774)
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 org.springframework.orm.hibernate3.HibernateTemplate$CloseSuppressingInvocationHandler.invoke(HibernateTemplate.java:1282)
at $Proxy0.load(Unknown Source)
at hibernate.EmployeeDao$1.doInHibernate(EmployeeDao.java:25)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:339)
at hibernate.EmployeeDao.getEmployee(EmployeeDao.java:29)
at hibernate.SpringHibernateTest.main(SpringHibernateTest.java:26)
「動作しない」とはどういう意味ですか? NullPointerExceptionを引き起こす行は何ですか? –
Google for "for org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)"。あなたはHibernateの古いバージョンを実行していますが、この例外のいくつかの理由(不正なマッピング、不良なJARなど)が見つかりました。それはload vs getとはあまり関係がありません。 –
@JB Nizet:ありがとうございました!!!私は自分のビルド構成をチェックし、私はこの問題に直面している古いジャーを更新し、プロジェクトをメイベールすることを学んでいます...しかし、他の疑問を持って私を助けてください。セッションオブジェクトがdoInHibernateに渡される方法 セッションはいつ開始され、終了するのですか?** –