Hibernate关联映射创建数据库中存在的对象设置关联关系不级联保存的方法
本文由发表于6年前 | J2EE | 暂无评论 |  被围观 7,704 views+

在多对多或其他关联映射中,如果只是希望更新关联关系,而不进行级联保存。如下,PrivilegeGroup和SystemPrivilege是多对多双向关联关系,通过new构造一个数据库中已有的SystemPrivilege然后和PrivilegeGroup设置关系,进行保存:

PrivilegeGroup group = new PrivilegeGroup();
group.setName(name);
SystemPrivilege systemPrivilege = new SystemPrivilege(id);
group.getPrivileges().add(systemPrivilege);
privilegeGroupService.save(group);

接着提示如下错误:

Caused by: java.sql.BatchUpdateException: Duplicate entry 'department-view' for key 1

原因是,虽然SystemPrivilege在数据库中已有,但是由于这里是new出来的对象,属于transient状态,由于设置了:

<set name="privileges" table="t_privilege_groups" cascade="save-update,persist" >

所以进行级联保存,导致提示主键冲突:

Duplicate entry 'department-view' for key 1
如果希望只是设置关系而不更新,则可以在SystemPrivilege的主键中设置unsaved-value="none"属性:
<composite-id name="id"
              class="com.itzhai.bean.privilege.SystemPrivilegePK"
              unsaved-value="none">
    <key-property name="module"
                  column="module"
                  type="java.lang.String" length="20" />
    <key-property name="privilege"
                  column="privilege"
                  type="java.lang.String" length="20" />
</composite-id>
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/hibernate-is-mapping-to-create-the-database-objects-that-exist-in-association-does-not-set-the-cascade-method-of-preservation.html
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 10/2
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 【转】在危机的边缘上 马斯克如何看待失败? 2013/11/4
2 Python语法笔记1 2014/3/9
3 Velocity模板引擎的介绍和基本的模板语言语法使用 2011/10/5
4 JSF笔记 – 托管Bean的详细介绍 2011/12/2
5 Git分布式文件管理工具与使用GitHub托管项目 2012/6/5
6 Java虚拟机笔记 – JVM 类的加载、连接和初始化 手动加载类 2011/11/4
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.