我正在使用带有一对一映射的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();
答案 0 :(得分:0)
当我使用具有Spring Transaction的Transactional注释时, 父对象保存在DB中但不保存在child.eg中:学生将保存 保存没有标记。
您自己管理会话和事务,或允许Spring为您执行此操作(使用@Transactional
)
如果您使用@Transactional
,则不应自行打开会话,而应使用session.getCurrentSession()
,由Spring管理开启和关闭。