- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate
常见异常
当出现
异常时
一般是因为映射文
件出现错误。
XML
当出现 Resource:
配置文件没找到所致, 有可能是放置目录不正确, 或者没将其加入
not found 是因为
中。
当 出 现
Could
not
find
a
setter for property name in class
时 ,原因一般是因为
XML
映射文件中的属性与对应的
Java 类中的属性
的 getter 或 setter 方法不一致。
当出现 ids for this class
must be manually assigned before calling save(): 异常时,一般是因为 id 元素配
置不正确, id 元素缺少其子元素 generator/generator 的配置引起。
解决方案:
class=, 其中
id class
元素映射了相应数据库表的主键字段,对其子元素
generator
的取值可以为
increment
、 identity
、 sequence
、 hilo
、 native
等,更多的可参考
hibernate
参考文档,一般取其值为
native
。具体可参考
小节。
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 中没有这个对象,则会报错所以当你使用
的 session 中去重新取
saveOrUpdate(object)
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 了,
方法为:
...
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 语句中
文档评论(0)