在使用Hibernate的Spring Transaction中,子对象不保存在DB中

时间:2018-03-27 10:48:24

标签: spring hibernate

我正在使用带有一对一映射的Hibernate的Spring Transaction(例如:一个Student有标记),因此实体Student与Marks有一对一的映射。我提供了Cascade = ALL

当我使用session.beginTransaction()使用普通事务并最后提交时,两个对象都保存得很好。

当我使用具有Spring Transaction的Transactional annontation时,Parent对象保存在DB中但不保存在child.eg中:学生将被保存而没有标记。

以下是DAO代码:

Session session = sessionFactory.openSession();

        Mark_Tx mark = new Mark_Tx(marks,year);
        Student_Tx student = new Student_Tx(name, age);
        student.setMarks(mark);
        mark.setStudent(student);
        session.persist(student);
        session.close();

1 个答案:

答案 0 :(得分:0)

  

当我使用具有Spring Transaction的Transactional注释时,   父对象保存在DB中但不保存在child.eg中:学生将保存   保存没有标记。

您自己管理会话和事务,或允许Spring为您执行此操作(使用@Transactional

如果您使用@Transactional,则不应自行打开会话,而应使用session.getCurrentSession(),由Spring管理开启和关闭。