hibernate常见问题及处理

上传人:cl****1 文档编号:508174758 上传时间:2023-08-14 格式:DOC 页数:2 大小:14.86KB
返回 下载 相关 举报
hibernate常见问题及处理_第1页
第1页 / 共2页
hibernate常见问题及处理_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《hibernate常见问题及处理》由会员分享,可在线阅读,更多相关《hibernate常见问题及处理(2页珍藏版)》请在金锄头文库上搜索。

1、Hibernate 常见异常 1.1 net.sf.hibernate.MappingException 当出现net.sf.hibernate.MappingException: Error reading resource:异常时一般是因为映射文 件出现错误。 1.2 当出现net.sf.hibernate.MappingException: Resource: not found是因为XML配置文件没找到所致,有可能是放置目录不正确,或者没将其加入hibernate.cfg.xml中。 2. net.sf.hibernate.PropertyNotFoundException 当出现ne

2、t.sf.hibernate.PropertyNotFoundException: Could not find a setter for property name in class 时,原因一般是因为XML映射文件中的属性与对应的Java类中的属性的getter或setter方法不一致。 3. org.hibernate.id.IdentifierGenerationException 当出现org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before

3、calling save():异常时,一般是因为元素配置不正确,元素缺少其子元素的配置引起。 解决方案:元素映射了相应数据库表的主键字段,对其子元素,其中class 的取值可以为increment、identity、sequence、hilo、native等,更多的可参考hibernate参考文档,一般取其值为native 。具体可参考2.2.2.1小节。 4. a different object with the same identifier value was already associated with the session 当出现a different object with

4、the same identifier value was already associated with the session时,一般是因为在hibernate中同一个session里面有了两个相同标识但是是不同实体。 有如下几种解决方案: (1)使用session.clean(),如果在clean操作后面又进行了saveOrUpdate(object)等改变数据状态的操作,有可能会报出Found two representations of same collection异常。 (2)使用session.refresh(object),当object不是数据库中已有数据的对象的时候,不能

5、使用 session.refresh(object)因为该方法是从hibernate的session中去重新取object,如果session中没有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判断一下。 (3)session.merge(object),Hibernate里面自带的方法,推荐使用。 再次碰到:a different object with the same identifier value was already associated with the session这个错误我一共遇到过两次,一直没有找到很好的解决方案,这个错误产生原因相信大

6、家都知道,因为在hibernate中同一个session里面有了两个相同标识但是是不同实体. 一开始按网上说的用session.merge(Object)报了一个错,可能是没有用好,改用 session.clear(); session.update(user);这样就OK了, 方法为:package org.springframework.orm.hibernate3.support; . public void modifyByMerge(User user) Session session = getHibernateTemplate().getSessionFactory(). get

7、CurrentSession(); session.clear(); session.update(user); . 项目用的是spring + hibernate所以得用getHibernateTemplate().getSessionFactory().getCurrentSession();得当前Session 5. SQL Grammer Exception,Could not execute JDBC batch update 当出现SQL Grammer Exception,Could not execute JDBC batch update异常时,一般是由如下问题 引起: (1)SQL语句中存在语法错误或是传入的数据有误; (2)数据库的配置不合法,或者说是配置有误。较容易出现的有数据表的映射文件(,hbm.xml文件)配置有误 ;Hibernate.cfg.xml文件配置有误; (3) 当前的数据库用户权限不足,不能操作数据库。以是以Oracle 数据库为例,这种情况下在错误提示中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号