我有一个类Problem
,然后是其他各种类,它们扩展了基类Solution
,例如BasicSolution
,ExpertSolution
,还有很多其他类
解决方案子类。虽然Problem
类不需要解决方案列表,但Problem
类将是各种解决方案类的“外键”。
所以我想在各种解决方案表中使用Problem
表的外键(每个解决方案子类一个表)。我如何通过Hibernate实现它?
我知道从Hibernate的角度来看,这不是正确的数据库设计,但它是一个遗留系统,无法进行调整。我知道一对多的实体 关联,但这将需要一些解决方案列表出现在问题类(我不想要)。
你能否就这个问题提出一些答案?
答案 0 :(得分:1)
您需要使用@ManyToOne关联映射Solution基类中的关系:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Solution {
...
private Problem _problem;
@ManyToOne
@JoinColumn(name="PROBLEM_ID")
public Problem getProblem() {
return _problem;
}
...
}
所有解决方案子类都与问题有关。
你也可以使用@OneToOne而不是@ManyToOne,区别在于@ManyToOne必须在关系的这一边有外键。