2012-04-12 117 views
0

外键关系我有一个类Problem,然后延伸的基类SolutionBasicSolutionExpertSolution,许多其他 溶液子类的各种其他类。该Problem类将各种解决方案班“外键”,虽然Problem类并不需要的解决方案列表。实现在休眠

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

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

能否请您提出一些回答这个问题呢?

回答

1

你需要映射与@ManyToOne协会在解决方案的基类的关系:

@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必须在关系的这一侧具有外键。

+0

问题可以有多个解决方案,因此在解决方案表(多个表,每种解决方案的每个表)中,问题表将存在一个外键。现在的问题是,您不需要在Problem类中拥有Solution的实例。 – Ashish 2012-04-12 09:16:34

+0

好吧现在我明白了,我正在编辑你的案例的答案,谢谢你 – Teg 2012-04-12 09:44:24