jpa 中的CascadeType.Merge-问答-阿里云开发者社区-阿里云

开发者社区> 爵霸> 正文

jpa 中的CascadeType.Merge

2016-03-04 09:18:51 1981 1

关于配置一对多的多端的cascadetype的问题。

//学生类
public class Student{ 
    private String s_id;
    private ClassRoom classRoom;

//....getter and setter      
@ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.MERGE)      
@JoinColumn(name="c_id")     
public Class getClassRoom() { return classRoom;}
}

//教室类
public class ClassRoom{
    private String c_id;
    pricate Set<Student> students = new HashSet<Studnet>(0);

//...getter and setter
} 

//测试类
public class Test{
    public void test(){
        //新建一个教室对象
        ClassRoom cr = new ClassRomm();
        cr.setC_id("1");

        //新建一个学生对象并且关联教室
        Student stu = new Student();
        stu.setS_id("201501");
        stu.setClassRoom(cr);

        //调用JPA的persistent方法
        entityManager.persistent(stu);
    }
}


 //异常信息
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: ClassRoom -> ClassRoom
    at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:387)
    at org.hibernate.engine.Cascade.cascade(Cascade.java:172)
    at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:154)
    at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:145)
    at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
    at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
    at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:76)
    ... 36 more

我想为什么要在保存Student之前要先persistentClassRoom,我不是设置了CascadeType.MERGE了么。。。。原以为这里的MERGE和Hibernate的saveOrUpdate是一个意思,难道不是麼,,对于ORM框架本人是初学者,,烦请指教,谢谢

(为了突出问题,删掉了不必要的代码,见谅)

取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 18:51:48

    你要级联保存的话得双向配置。

    0 0
相关问答

40

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 144313浏览量 回答数 40

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 223071浏览量 回答数 162

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 333958浏览量 回答数 8

13

回答

[@饭娱咖啡][¥20]我想知道 Java 关于引用那一块的知识

心意乱 2018-10-31 18:44:12 142161浏览量 回答数 13

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 292381浏览量 回答数 110

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146823浏览量 回答数 22

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 643297浏览量 回答数 18

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 145661浏览量 回答数 31

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 135646浏览量 回答数 42

10

回答

[@墨玖tao][¥20]为什么流式处理框架都是 java 写成的,JVM 是不是在流和批存在着特殊优势。还有分布式资源调度,感觉Mesos 的成长速度跟不上 Yarn。这是为什么?

管理贝贝 2018-10-23 13:18:03 136148浏览量 回答数 10
+关注
2
文章
9426
问答
相关电子书
更多
《SaaS模式云原生数据仓库应用场景实践》
立即下载
文娱运维技术
立即下载
《看见新力量:二》电子书
立即下载