jpa级联添加_请教一个JPA多对多级联保存的问题
实体类
// 标签类
@Entity
public class Label {
@Id
@Column(name = "lid",unique = true,nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer lid;
private String tag;
@ManyToMany(fetch = FetchType.EAGER)
@Cascade(value = {CascadeType.ALL}) // 设置级联关系
@JoinTable(name = "song_label",// 指定第三张表
joinColumns = {@JoinColumn(name = "label_id")},//本表与中间表的外键对应
inverseJoinColumns = {@JoinColumn(name = "song_id")}
)
private Set<Song> songs = new HashSet<>();
// setter and getter
}
// 歌曲类
@Entity
public class Song {
@Id
@Column(name = "sid",unique = true,nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer sid;
private String title;
private String special;
@ManyToMany(fetch = FetchType.EAGER)
@Cascade(value = { CascadeType.ALL})
@JoinTable(
name = "song_label",
joinColumns = {@JoinColumn(name = "song_id")},//本表与中间表的外键对应
inverseJoinColumns = {@JoinColumn(name = "label_id")}
)
private Set<Label> labels = new HashSet<>();
// setter and getter
}
关联关系: 一首歌曲可以对应多个标签,一个标签可以对应多首歌曲
遇到的级联保存问题: 在添加已经存在的标签记录时保错org.hibernate.PersistentObjectException: detached entity passed to persist
测试代码
@Test
public void test1() {
Song song = new Song();
song.setSpecial("等你下课");
song.setTitle("等你下课");
Label label1 = new Label();
label1.setTag("华语");
Label label2 = new Label();
label2.setTag("内地");
song.getLabels().add(label1);
song.getLabels().add(label2);
this.songDao.save(song);//因设置级联关系CascadeType.ALL相应会在Label表添加记录
}
@Test
public void test123(){
Song song = new Song();
song.setSpecial("流星花园");
song.setTitle("北极星的眼泪");
Label label1 = this.labelDao.findByTag("爱情");
Label label2 = this.labelDao.findByTag("华语");
if (label2 == null){
label2 = new Label();
label2.setTag("华语");
}
if(label1 == null){
label1 = new Label();
label1.setTag("爱情");
}
song.getLabels().add(label1);
song.getLabels().add(label2);
this.songDao.save(song);// 报错org.hibernate.PersistentObjectException: detached entity passed to persist: com.example.data.bean.Label
}
test1()能够添加成功,到了test2时由于Label表存在”华语”这条记录,保存会出错
疑问:如何在Label表存在记录时执行更新而不是保存?
在此先感谢大神路过指点迷津哈哈
jpa级联添加_请教一个JPA多对多级联保存的问题相关推荐
- html5shiv 源码,javascript,_请教一个html5shiv源码插入样式的问题,javascript - phpStudy...
请教一个html5shiv源码插入样式的问题 阅读html5shiv源码的时候,对addStyleSheet函数添加样式的方式有些困惑,特来请教 源码如下: function addStyleShee ...
- 电源空间辐射CDN余量低_请教一个EMI问题:CE传导辐射在射频工作频点超标,求解决。...
请教一个EMI问题:CE传导辐射在射频工作频点超标,求解决. budaqiu Post at 2011/10/10 11:37:28 大侠们,做EMC认证时,空间辐射RE通过,传导辐射CE发现在射频工 ...
- jpa 返回数据转换_如何使用JPA类型转换器加密数据
jpa 返回数据转换 几天前,我读了Bear Giles关于2012年使用JPA监听器进行数据库加密的有趣文章.他讨论了对加密解决方案的要求,并提供了JPA监听器的代码示例. 他的主要要求是: 提供不 ...
- JPA+Hibernate 3.3 ——第一个JPA程序
所需要的最小的jar包(注意:jar包所在路径不能含有空格或中文) hibernate3.jar hibernate-cglib-repack-2.1_3.jar slf4j-api-1.5.2.ja ...
- python 修改列名_请教一个 Python 技巧(批量对 pandas.DataFrame()统一修改列名)
首先,我搞了个这样的事: pdTable1 = pd.DataFrame() pdTable2 = pd.DataFrame() pdTable3 = pd.DataFrame() pdTable4 ...
- mysql怎么判断2个时间戳为同一天_请教一个需求js怎么判断时间戳是否属于同一天...
思路就是把history数组处理成一个相同日期是在同一个数组成员内,再调整一下 addHisList 函数就可以 demo 链接:https://codepen.io/liangxh052... fu ...
- oracle 物理读突然增加的原因_请教一个诡异的物理读比逻辑读还多的问题!!!!
本帖最后由 wxjzqym 于 2012-6-1 10:27 编辑 为了更好的理解物理读和逻辑读的关系,模拟了以下实验:(DB 10.2.0.1.0 32bit) 1.在scott用户下创建测试表和相 ...
- 常数乘以无穷大等于多少_请教一个数学问题:无穷大乘以无穷小等于多少?
实在受不了了,只好出来说两句.好歹也是数学这一行的,看她被你们 糟蹋成这样实在不忍心. "无穷大量"和"无穷小量"在高等数学中都是趋于特定极限的变量的称呼, 一 ...
- php时间相减_请教一个PHP的时间戳转换成时间相减的問題?
name.php 注册用户 用户名: 姓名: 密码: 确认密码: email: 进入: tenglu 回首页 join.php $userid=$_POST['userdi']; $name=$_PO ...
最新文章
- 分享一款jQuery全屏滚动页面特性案例
- 为什么携程要做好持续交付?
- Android列表视图(List View)
- mariadb mysql 5.6_MySQL 5.6 和 MariaDB-10.0 的性能比较测试
- nssl1519-背包签到题【数论】
- python变量名区分大小写_python变量名要不要区分大小写
- Java 源码 —— List
- 马哥linux视频笔记,马哥linux培训第四天笔记
- 双样本T检验-P-T和T-T检验
- CSS效率---常用CSS框架
- 更好用的冒泡排序、双向冒泡排序,拓展荷兰国旗问题
- 第十四届蓝桥杯大赛软件赛省赛-试题 B---01 串的熵 解题思路+完整代码
- 国税局发票查验中英文验证码识别最新版,识别率99.9%
- [翻译] 在 LaTeX 中对齐公式
- 【万物皆可 GAN】CycleGAN 原理详解
- 2021年电工(初级)新版试题及电工(初级)试题及解析
- python图形界面教程(tkinter)
- unity3d布料特效的简单使用
- 靳氏DIV布局兼容“武林秘诀”
- 影视后期制作学习第二天(AE)
热门文章
- 取消Outlook脱机工作
- 量子通信技术和量子计算机,我国的量子通信技术,走在世界前沿,但是量子计算机还需加把劲!...
- ZOJ 3449 Doraemon's Number Game III
- Opencv出现错误 cv2.error:OpenCV(4.4.0)C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-6lylwdcz\open
- 2022-2028年版中国类金融行业发展走势与投资风险评估报告
- 微软股价史高,不干了这碗CEO亲自熬的鸡汤?
- NOI国家集训队论文集
- 欧阳娜娜作息时间公开,怎样活成所有女生羡慕的样子
- php如何调用163邮箱发邮件,ThinkPHP3.2利用QQ邮箱/163邮箱通过PHPMailer发送邮件的方法...
- Kubernetes基础:问题排查方法示例:结合使用kubectl get event