我正在使用Hibernate保存实体的瞬态实例:
Student e = new Student();
e.setName("Clio");
School s = new School();
s.setName("Archimede");
e.setSchool(s);
myDao.save(e);
我是事务性的道:
@Transactional
@Repository
public class MyDao {
// Other code
为什么在这种情况下只有学生插入表中而不是学校?
答案 0 :(得分:1)
因为你没有把学校传给save()
,学校目前与学生没有任何关系。
@ManyToOne(cascade=CascadeType.PERSIST)
或@ManyToOne(cascade=CascadeType.ALL)
)。
答案 1 :(得分:0)
既然你没有陈述某事。否则,我想你的学校实体拥有学校和学生之间的关系。因此,您必须将学生添加到学校实体中的持久集(例如school.getStudents()。add(student))并在之后保存学校实体。
有关关系所有权的更多信息,请查看here。当然,你也可以决定让学生拥有这段关系,虽然在这种情况下对我来说没什么意义,但是你提供的代码会按预期工作。
您还需要添加正确的级联,如上一个答案中所述