Java “我的实体”中未设置外键
当我持久化一个问题实例时,与该问题相关的答案对象不会将外键设置为该问题的主键。但是,问题实例和属于它的所有答案都成功地持久化到数据库中 如果你需要更多的代码,我会添加它 问题实体Java “我的实体”中未设置外键,java,jakarta-ee,jpa,Java,Jakarta Ee,Jpa,当我持久化一个问题实例时,与该问题相关的答案对象不会将外键设置为该问题的主键。但是,问题实例和属于它的所有答案都成功地持久化到数据库中 如果你需要更多的代码,我会添加它 问题实体 @OneToMany(mappedBy = "question", fetch = FetchType.EAGER, cascade = { CascadeType.ALL }) @OrderBy("serialNumber ASC") private List<Answer> answers; @Man
@OneToMany(mappedBy = "question", fetch = FetchType.EAGER, cascade = { CascadeType.ALL })
@OrderBy("serialNumber ASC")
private List<Answer> answers;
@ManyToOne(fetch = FetchType.LAZY)
private Question question;
或者我是否通过set
方法手动将问题实例分配给每个答案
更新
好的,我试着通过每个答案对象上的setter设置问题实例,它是有效的。但是,当您使用上面的级联规则时,有人能说这是否正确吗。您仍然需要手动将它们连接在一起。我认为您必须这样做。
cascadeType.ALL
只意味着如果你对你的问题做任何事情,比如坚持它,你所有的答案也会坚持下来。我想你必须这样做。cascadeType.ALL
只意味着如果你对你的问题做任何事情,比如坚持它,你所有的答案也会坚持下来。是的,这是正确的。Hibernate使用关联的拥有方来持久化关联。拥有方是没有“mappedBy”属性的一方
当您持久化一个问题时,级联将使所有答案持久化,当您合并该问题时,级联将合并答案,对于所有其他操作也是如此。但是这种联系必须由你来处理。是的,这是正确的。Hibernate使用关联的拥有方来持久化关联。拥有方是没有“mappedBy”属性的一方
当您持久化一个问题时,级联将使所有答案持久化,当您合并该问题时,级联将合并答案,对于所有其他操作也是如此。但是这种联系必须由你来处理。嗯。。是的,我确实认为您必须手动设置双向关联对象的关联。也就是说,添加一个你应该做的答案
Answer a = new Answer();
question.addAnswer(a);
answer.setQuestion(question);
这至少是如果你希望这种关系是双向的,即能够从一个答案到另一个问题,反之亦然 嗯。。是的,我确实认为您必须手动设置双向关联对象的关联。也就是说,添加一个你应该做的答案
Answer a = new Answer();
question.addAnswer(a);
answer.setQuestion(question);
这至少是如果你希望这种关系是双向的,即能够从一个答案到另一个问题,反之亦然