资源预览内容
第1页 / 共2页
第2页 / 共2页
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
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 当出现net.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 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 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不是数据库中已有数据的对象的时候,不能使用 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这个错误我一共遇到过两次,一直没有找到很好的解决方案,这个错误产生原因相信大家都知道,因为在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(). getCurrentSession(); 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 数据库为例,这种情况下在错误提示中
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号