在Hibernate中实现外键关系

时间:2012-04-12 04:52:41

标签: java hibernate

我有一个类Problem,然后是其他各种类,它们扩展了基类Solution,例如BasicSolutionExpertSolution,还有很多其他类 解决方案子类。虽然Problem类不需要解决方案列表,但Problem类将是各种解决方案类的“外键”。

所以我想在各种解决方案表中使用Problem表的外键(每个解决方案子类一个表)。我如何通过Hibernate实现它?

我知道从Hibernate的角度来看,这不是正确的数据库设计,但它是一个遗留系统,无法进行调整。我知道一对多的实体 关联,但这将需要一些解决方案列表出现在问题类(我不想要)。

你能否就这个问题提出一些答案?

1 个答案:

答案 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必须在关系的这一边有外键。