org.hibernate.tuple.AbstractEntityTuplizer.createProxy錯誤的一種解決(http://www.blogjava.net/tantanxiaos

來源:互聯網
上載者:User

在ssh三大架構整合時,使用hibernate能很好的控製表與表的關係。但配置稍有疏忽,也容易出錯,下面代碼就是一種。我在資料庫中沒有設定外鍵關係,而是想通過hibernate來控制,有兩個表,欄目表(lm)和課程表(kc),他們是多對一的關係。所以我在Lm的pojo類中如下設定 public class Lm implements java.io.Serializable { //欄目id private int id; private String name; private Kc kc; //順序
private int location; //getter和setter方法 }

對應檔Lm.hbm.xml如下設定 結果部署,運行,顯示如下錯誤

Hibernate: select lm0_.id as id5_, lm0_.name as name5_, lm0_.kcId as kcId5_, lm0_.location as location5_ from eteares.lm lm0_ where lm0_.kcId=? 2010-10-2 0:35:48 org.apache.catalina.core.StandardWrapperValve invoke 嚴重: Servlet.service() for servlet default
threw exception 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.internalLoad(SessionImpl.java:830) at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266) at org.hibernate.type.EntityType.resolve(EntityType.java:303) at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842) at org.hibernate.loader.Loader.doQuery(Loader.java:717) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.doList(Loader.java:2145)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029) at org.hibernate.loader.Loader.list(Loader.java:2024) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:849)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372) at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840) at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:836)
at cn.edu.ujn.wsjx.dao.impl.LmDao.findByCourse(LmDao.java:74) at cn.edu.ujn.wsjx.managecolumn.service.impl.ColumnService.getColumnByCourse(ColumnService.java:56) at cn.edu.ujn.wsjx.managecolumn.action.ColumnAction.browseColumn(ColumnAction.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

經診斷,此為hibernate的設定問題,因為預設的lazy屬性為true,即使用了懶載入,而懶載入是在用到該對象的屬性時才會載入資料庫。所以應該把在標籤中加入lazy="false"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.