使用JPA的CascadeType.Merge时遇到的问题

bbos1994 2015-12-27 09:19:48
//学生类
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



请问CascasdeType的Merge是类似与Hibernate的saveOrUpdate吗?本人初学,如果不是,那么哪个才能达到saveorupdate的效果呢?
...全文
332 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbos1994 2015-12-29
  • 打赏
  • 举报
回复
有人吗。。。。。。。
bbos1994 2015-12-28
  • 打赏
  • 举报
回复
有人能帮帮忙吗。。。。。
bbos1994 2015-12-27
  • 打赏
  • 举报
回复
希望有人可以帮到我,,谢谢

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧