问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...JDBCException: could not load an entity:

发布网友 发布时间:2024-10-13 12:40

我来回答

4个回答

热心网友 时间:2024-11-19 11:39

首先这个问题与主键生成方式没有关系,况且楼主可能使用的是Mysql数据库,因此采用identity生成方式完全正确。
其次关于load取数据出现问题是因为取数据的表有级联关系,在我们分析此问题之前,我们先要明白hibernate中什么是load,什么是get,它们两者之间有什么区别呢??
只要你在以往的开发过程中稍加注意,不难发现,假如有两张表,他们为一对多关系,现在开始查询,如果使用get,那么查询的结果将会是把2张表的数据全部持久化到内存中(如果关系比较深你还打算用它吗?),如果是采用load的方式,那么将只会是把其中一张表(A表)的数据加载到内存中,而另一张表(B表)只存在一个标识,原则上是等页面显示时,如果只要显示A表数据,那么程序直接内存中找A表数据,如果还要显示B表数据,那么就要通过内存中B表的标识重新查找数据库,此时,问题出来了,假如你在DAO中,session.load之后你结束了session的生命周期,那么在页面要显示B表数据,而B表在内存中只是一个标识啊,你的session又处于关闭状态,它无法找啊,这就会出现上面你遇到的那个问题,因此,假如我们不关闭session,页面可以正常显示2张表的数据了,但是问题又来了,如果不关闭session,那么对象将一直以持久态的形式保存在内存中,留下的隐患难以想象(比如该对象容易数据混乱等等),千万不要说session.clear之内的东西也可以把对象变游离态之内的话啊,如果你彻底用session.clear取代session.close的话,嘿嘿,自己去尝试吧,当问题显现出来的时候痛苦吧^_^!好了,我还是说下解决方法吧~最好的方法就是将DAO中的session与事物全部抽取出来做成一个hibernate过滤器,这样既能解决你上面的问题,又能大大减少DAO中的代码...好处很多的哦,使用一次之后就容易上瘾-_-我空间里好象有,你可以去看看~稍微修改就可以用!(最好和工具类一起搭配使用,超爽滴!)

热心网友 时间:2024-11-19 11:45

换2005的驱动吧,补充一下,换驱动要修改URL和Driver
http://www.microsoft.com/downloads/details.aspx?familyid=C47053EB-3B64-4794-950D-81E1EC91C1BA&displaylang=zh-cn
JDBC3.0是1个jar,2.0是3个jar
在3.0里面的URL和Driver是这样写的

jdbc:sqlserver://localhost
com.microsoft.sqlserver.jdbc.SQLServerDriver

请注意看,和2.0的区别

jdbc:microsoft:sqlserver://localhost
com.microsoft.jdbc.sqlserver.SQLServerDriver

热心网友 时间:2024-11-19 11:38

<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="identity"></generator>
</id>
楼主把identity改为native试试我以前遇到过这种情况,因为identity的id值如果是自动增长的很容易出问题,试试看行不行不行我再看看其它的
————————————————————————————————
楼主可以吗如果不行再试试我下面的,load是读缓存中的数据,could not load an entity,代表缓冲中没有数据,试试把dao中的,load方法(从缓存冲读数据没有则抛出异常)改为get方法(get 每次执行先从缓存中找,都从数据库查数据,没有则返回null)
______________________________________________________
我们在使用Hibernate的lazy load来优化性能的时候,只要Session关闭后再试图访问未被载入的对象时,
就会出现异常。通常使用在事务之内来访问数据是适合的,但是有时候我们需要强制载入这些数据,例
如在Web视图中访问这些模型对象。
在业务层强制载入这些数据,通常不是很好的解决方案,因为不同的视图在使用业务方法的时候,需要的数据
通常不一样,这样业务方法可能绑定到特定的控制器中。
在业务层上面增加一个Facade(也可以用过滤器)层来解决这个问题,同样也会增加一层不太必要的封装,增加了复杂性,POJO in Action一书中的例子就是这么设计的(POJO in Action感觉是本蛮不错的书),详细的可以看看这本书。
通常Open Session in View模式相对来说是个不错的解决方案。事务在服务层结束,但关联的Hibernate Session保持打开状态,直到视图生成完成为止。这样及早的释放了数据库锁和连接,并且视图中可以通过lazy load来加载。
-----------------------------------------------
http://www.javaresearch.org/forum/thread.jsp?thread=60410
不知道楼主是不是这篇文章的问题

热心网友 时间:2024-11-19 11:45

上面问题补充:
全部异常信息为:
Hibernate: select qjsys29x0_.ID as ID30_1_, qjsys29x0_.QJSYS29F as QJSYS2_30_1_, qjsys29x0_.QJSYS29H as QJSYS3_30_1_, qjsys29x0_.QJSYS29C as QJSYS4_30_1_, qjsys29x0_.QJSYS29A as QJSYS5_30_1_, qjsys29x0_.QJSYS29B as QJSYS6_30_1_, qjsys29x0_.QJSYS29D as QJSYS7_30_1_, qjsys29x0_.QJSYS29E as QJSYS8_30_1_, qjsys29x0_.QJSYS29G as QJSYS9_30_1_, qjsys29x0_.QJSYS29I as QJSYS10_30_1_, qjsys30x1_.ID as ID29_0_, qjsys30x1_.QJSYS30A as QJSYS2_29_0_, qjsys30x1_.QJSYS30B as QJSYS3_29_0_, qjsys30x1_.QJSYS30C as QJSYS4_29_0_, qjsys30x1_.QJSYS30D as QJSYS5_29_0_, qjsys30x1_.QJSYS30E as QJSYS6_29_0_, qjsys30x1_.QJSYS30F as QJSYS7_29_0_, qjsys30x1_.QJSYS30G as QJSYS8_29_0_, qjsys30x1_.QJSYS30H as QJSYS9_29_0_ from QJDB.dbo.QJSYS29 qjsys29x0_ left outer join QJDB.dbo.QJSYS30 qjsys30x1_ on qjsys29x0_.ID=qjsys30x1_.ID where qjsys29x0_.ID=?
org.hibernate.exception.GenericJDBCException: could not load an entity: [com.qinjing.hibernate.bean.Qjsys29#3]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1799)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:47)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:41)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:161)
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 com.qinjing.hibernate.business.TestOne2OneBusiness.getQjsys29(TestOne2OneBusiness.java:43)
at com.qinjing.hibernate.business.TestOne2OneBusiness.main(TestOne2OneBusiness.java:92)
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 2.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.validateColumnIndex(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source)
at org.hibernate.type.IntegerType.get(IntegerType.java:28)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:113)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:102)
at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:95)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:1899)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1372)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1300)
at org.hibernate.loader.Loader.getRow(Loader.java:1197)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:569)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1785)
... 13 more
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
猛禽点烟器在什么位置? 哪家公司的Burkert角座阀性价比更高? 腊肠炒青豆做法 香肠炒青豆的家常做法大全怎么做好吃 我想模仿一个淘宝大店铺'主要是因为他们销量很好,。我想生产他们的... 模仿别人淘宝店铺算侵权吗?侵权赔偿标准介绍 applexsmax突然黑屏 大雁气功当代传人 贷款担保合同签字担保人没有来是不是有效 当一个习惯养成的时候,是不是戒不掉了 ...org.hibernate.MappingException: Unknown entity: java.lang... Win10正式版今日发布,盗版用户如何升级? ...她把它撕了,照的照片放在微信封面是什么意思 ...换成我给她拍的腚照了,她是有什么意思在里面? ...些明星保养的很好,外表看上去很年轻,哪些同龄明星让你感到惊讶?_百 ... 当孩子给你送上一份他并不是十分喜欢的礼物怎么办 孩子母亲节送的礼物太不实用,怎么办? 孩子送给妈妈的花不实用应该骂他吗? 孩子送给我的礼物我不喜欢,该怎么办呀? 孩子不喜欢的礼物该怎么办呢? 孩子送的礼物我觉得不实用怎么办呢 孩子给我送不喜欢的礼物,该怎么处理呢 孩子送给父母不需要的礼物怎么处理? 电脑蓝牙外设无法驱动怎么办? ...to process purchases at this time!苹果手机出现这个问题怎_百度知 ... 年轻就要躁动,我的吉利ICON早已按捺不住 ...我用别人的驾驶证来扣分,但本人不去可以吗? win10密钥激活码 适合短发女生的发夹有哪些推荐? 如何在网上查到p5r考试答案? minecraft运行时弹出一大堆英文是什么情况 ...去黑头洗面奶哪个品牌好_去黑头的洗面奶排行榜_男士去黑头效果好的... 哪个牌子的洗面奶可以去黑头粉刺 所谓“教育”,不过是言传身教、细水长流 电脑重装后开机变慢是怎么回事? 有和疯狂动物城一样好看的电影吗 想去电影院看疯狂动物城,我妈不同意说是动画片有什么意思(其实我妈啊... 电影疯狂动物城多久会在电影院下映? 不去电影院还能在哪里可以看疯狂动物城? 新店开张霸气简短祝福贺词 刚买的丰田穿越者写着制造国是阿联酋,请问它是进口还是阿联酋制造 美版苹果5C 序列号:c7jm45nyffhp 型号不知是A1456 还是 A1532?现求... 旷工三天解除劳动合同书怎么写? 请问这是什么狗。性格温顺吗 多联机短接压力开关后显示2 数字能量学的背诵口诀是什么? ...眼睛感觉很干涩,看东西很模糊,是不是远视眼要配眼镜了? ...装修新房子,想请教装饰工程主要有哪些项目,一般的预算是怎样的... 前任结婚要不要参加 参加前任婚礼该说什么?