实体类

// 标签类

@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多对多级联保存的问题相关推荐

  1. html5shiv 源码,javascript,_请教一个html5shiv源码插入样式的问题,javascript - phpStudy...

    请教一个html5shiv源码插入样式的问题 阅读html5shiv源码的时候,对addStyleSheet函数添加样式的方式有些困惑,特来请教 源码如下: function addStyleShee ...

  2. 电源空间辐射CDN余量低_请教一个EMI问题:CE传导辐射在射频工作频点超标,求解决。...

    请教一个EMI问题:CE传导辐射在射频工作频点超标,求解决. budaqiu Post at 2011/10/10 11:37:28 大侠们,做EMC认证时,空间辐射RE通过,传导辐射CE发现在射频工 ...

  3. jpa 返回数据转换_如何使用JPA类型转换器加密数据

    jpa 返回数据转换 几天前,我读了Bear Giles关于2012年使用JPA监听器进行数据库加密的有趣文章.他讨论了对加密解决方案的要求,并提供了JPA监听器的代码示例. 他的主要要求是: 提供不 ...

  4. JPA+Hibernate 3.3 ——第一个JPA程序

    所需要的最小的jar包(注意:jar包所在路径不能含有空格或中文) hibernate3.jar hibernate-cglib-repack-2.1_3.jar slf4j-api-1.5.2.ja ...

  5. python 修改列名_请教一个 Python 技巧(批量对 pandas.DataFrame()统一修改列名)

    首先,我搞了个这样的事: pdTable1 = pd.DataFrame() pdTable2 = pd.DataFrame() pdTable3 = pd.DataFrame() pdTable4 ...

  6. mysql怎么判断2个时间戳为同一天_请教一个需求js怎么判断时间戳是否属于同一天...

    思路就是把history数组处理成一个相同日期是在同一个数组成员内,再调整一下 addHisList 函数就可以 demo 链接:https://codepen.io/liangxh052... fu ...

  7. oracle 物理读突然增加的原因_请教一个诡异的物理读比逻辑读还多的问题!!!!

    本帖最后由 wxjzqym 于 2012-6-1 10:27 编辑 为了更好的理解物理读和逻辑读的关系,模拟了以下实验:(DB 10.2.0.1.0 32bit) 1.在scott用户下创建测试表和相 ...

  8. 常数乘以无穷大等于多少_请教一个数学问题:无穷大乘以无穷小等于多少?

    实在受不了了,只好出来说两句.好歹也是数学这一行的,看她被你们 糟蹋成这样实在不忍心. "无穷大量"和"无穷小量"在高等数学中都是趋于特定极限的变量的称呼, 一 ...

  9. php时间相减_请教一个PHP的时间戳转换成时间相减的問題?

    name.php 注册用户 用户名: 姓名: 密码: 确认密码: email: 进入: tenglu 回首页 join.php $userid=$_POST['userdi']; $name=$_PO ...

最新文章

  1. 分享一款jQuery全屏滚动页面特性案例
  2. 为什么携程要做好持续交付?
  3. Android列表视图(List View)
  4. mariadb mysql 5.6_MySQL 5.6 和 MariaDB-10.0 的性能比较测试
  5. nssl1519-背包签到题【数论】
  6. python变量名区分大小写_python变量名要不要区分大小写
  7. Java 源码 —— List
  8. 马哥linux视频笔记,马哥linux培训第四天笔记
  9. 双样本T检验-P-T和T-T检验
  10. CSS效率---常用CSS框架
  11. 更好用的冒泡排序、双向冒泡排序,拓展荷兰国旗问题
  12. 第十四届蓝桥杯大赛软件赛省赛-试题 B---01 串的熵 解题思路+完整代码
  13. 国税局发票查验中英文验证码识别最新版,识别率99.9%
  14. [翻译] 在 LaTeX 中对齐公式
  15. 【万物皆可 GAN】CycleGAN 原理详解
  16. 2021年电工(初级)新版试题及电工(初级)试题及解析
  17. python图形界面教程(tkinter)
  18. unity3d布料特效的简单使用
  19. 靳氏DIV布局兼容“武林秘诀”
  20. 影视后期制作学习第二天(AE)

热门文章

  1. 取消Outlook脱机工作
  2. 量子通信技术和量子计算机,我国的量子通信技术,走在世界前沿,但是量子计算机还需加把劲!...
  3. ZOJ 3449 Doraemon's Number Game III
  4. Opencv出现错误 cv2.error:OpenCV(4.4.0)C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-6lylwdcz\open
  5. 2022-2028年版中国类金融行业发展走势与投资风险评估报告
  6. 微软股价史高,不干了这碗CEO亲自熬的鸡汤?
  7. NOI国家集训队论文集
  8. 欧阳娜娜作息时间公开,怎样活成所有女生羡慕的样子
  9. php如何调用163邮箱发邮件,ThinkPHP3.2利用QQ邮箱/163邮箱通过PHPMailer发送邮件的方法...
  10. Kubernetes基础:问题排查方法示例:结合使用kubectl get event