转载:org.hibernate.tuple.AbstractEntityTuplizer.createProxy错误的一种解决(http://www.blogjava.net/tantanxiaos
2010-11-27 23:15
459 查看
在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"
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"
相关文章推荐
- 转载http://www.blogjava.net/hadeslee/archive/2007/10/05/j3d1.html
- ExtJS-入门(转载自http://www.blogjava.net/puras/archive)
- VC连接数据库 --转载于http://www.blogjava.net/blogpig/archive/2007/06/15/124429.html
- 正则表达式中的特殊字符---转载(http://www.blogjava.net/onejavaer/)
- Struts2 的基石--拦截器(Interceptor)(转载自http://www.blogjava.net/max/archive/2006/12/06/85925.html)
- 解决在url中传递js变量到java程序中出现乱码问题(转自http://www.blogjava.net/fine)
- 理解Java ClassLoader机制 (转载http://www.blogjava.net/pandawang/archive/2006/08/20/64639.html)
- 转载请注明出处: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html
- Tomcat的参数配置及一般问题的解决---http://www.blogjava.net/Steven-bot/archive/2011/10/08/360161.html
- Struts2 的基石--拦截器(Interceptor)(转载自http://www.blogjava.net/max/archive/2006/12/06/85925.html)
- 让table具有滚动条(ZZ:http://www.blogjava.net/leekiang/archive/2007/09/24/147851.html)
- struts 笔记 转自 http://www.blogjava.net/hoojo/archive/2012/01/29/368972.html
- javascript中apply与call的区别(来自http://www.blogjava.net/jjshcc/archive/2010/08/04/327948.html)
- http://www.blogjava.net/nokiaguy/
- http://www.blogjava.net/zhangchao/archive/2011/05/26/351051.html
- javascript语言中的闭包http://www.blogjava.net/zkjbeyond/archive/2006/05/19/47025.html
- 友情博客链接(http://www.blogjava.net/pengpenglin/)
- strtus2 批量下载 中文问题、压缩文件等 ------ 讨论struts2工作流程 (摘自:http://www.blogjava.net/xcp/archive/2009/10/30/downloadlist.html)
- http://www.blogjava.net/beansoft/archive/2007/03/09/102812.html
- 理解Java ClassLoader机制(转自http://www.blogjava.net/pandawang/archive/2007/10/05/64639.html)