我有以下两个类Answer
和SubAnswer
:
@Entity
public class Answer {
@OneToMany(mappedBy = "answer", orphanRemoval = true, cascade = {CascadeType.ALL})
List<SubAnswer> subAnswers;
}
public class SubAnswer {
@ManyToOne(optional = false)
Answer answer;
}
我就像这样拯救他们
{
Answer ans = new Answer();
List<SubAnswer> subAnswerList = new ArrayList<SubAnswer>();
ans.setSubAnswers(subAnswerList);
ans.add(new SubAnswer());
ans.add(new SubAnswer());
entityManager.save(ans);
}
当我保存Answer
时,我认为它应该保存SubAnswer
s并保存它们但它没有设置SubAnswer.answer
字段并且它保持为null
老实说,我不能说这是好/坏的做法,但我遇到了类似的问题,并通过使用以下方法修复它:
@Entity
public class Answer {
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "answer_id")
List<SubAnswer> subAnswers;
}
@Entity
public class SubAnswer {
@ManyToOne
@JoinColumn(name = "answer_id")
Answer answer;
}
这会在SubAnswer表中为您提供“answer_id”列,并允许您执行以下操作:
{
Answer ans = new Answer();
List<SubAnswer> subAnswerList = new ArrayList<SubAnswer>();
ans.setSubAnswers(subAnswerList);
ans.add(new SubAnswer());
ans.add(new SubAnswer());
entityManager.save(ans);
}
仍然得到answer_id填充。
从旁注来看,我几乎没有开始进行休眠,所以如果有人对这个确定或者真正可怕的解决方案有任何意见,我会很感激听到这个!