亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Session.save 拋出 TransientObjectException

Session.save 拋出 TransientObjectException

Helenr 2021-07-06 18:57:44
我有兩個實體,名為student和course與ManyToMany 關系。正如我在這篇文章中讀到的,我們可以調用 save 方法來保存事務中的相關實體,否則一旦會話被刷新,它就會被保存。我也理解導致此異常的典型級聯問題,但在這里我也處理了它,但是我仍然在調用 save 方法時遇到 TransientObjectException 而persist 方法工作得很好。有人可以解釋一下這里發生了什么嗎?這是我的代碼:SaveVsPersistTest.javapublic class SaveVsPersistTest {    public static void main(String[] args) {        // Create session factory object         SessionFactory sessionFactory = new Configuration()                .configure("hibernate.cfg.xml")                .addAnnotatedClass(Student.class)                .addAnnotatedClass(Course.class)                .buildSessionFactory();        Session session = sessionFactory.openSession();        Transaction transaction = session.beginTransaction();        Student student = new Student("Gopal");        Course course1 = new Course("Java");        Course course2 = new Course("C++");        student.addCourse(course1);        student.addCourse(course2);        session.save(student);        transaction.commit();        session.flush();    }}
查看完整描述

3 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

正如其他人建議的那樣,您可以在所有相關實體上顯式調用 session.save,或者您可以使用 Hibernate 特定的@Cascade注釋,如下所示。

@Cascade(CascadeType.SAVE_UPDATE)

cascade={CascadeType.ALL}在任何關聯上使用的警告是,一旦您在父對象上調用 delete,您將刪除所有子對象(或表中的行)。所以對此要謹慎一些。


查看完整回答
反對 回復 2021-07-14
?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

試試這個,它對我有用


Student s = new Student();

       s.setName("Gopal");

Course c1 = new Course();

       c1.setCourseTitle("courseTitle1");   

Course c2 = new Course();

       c2.setCourseTitle("courseTitle2");


// adding courses to student entity

 s. getCourseList().add(c1);

 s. getCourseList().add(c2);



// adding a student to courses.

 c1.getStudentList().add(s);

 c2.getStudentList().add(s);



 // saving all entities to DB.

     session.save(s);

     session.save(c1);

     session.save(c2);    


    transaction.commit();

    session.flush();


查看完整回答
反對 回復 2021-07-14
  • 3 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號