【问题标题】:Implementing a foreign key relationship in Hibernate在 Hibernate 中实现外键关系
【发布时间】:2012-04-12 17:54:42
【问题描述】:

我有一个 Problem 类,然后是其他各种扩展基类 Solution 的类,如 BasicSolutionExpertSolution 等 解决方案子类。 Problem 类将是各种解决方案类的“外键”,尽管 Problem 类不需要解决方案列表。

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

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

您能否为这个问题提出一些答案?

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    您需要将 Solution 基类中的关系映射到 @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 必须在关系的这一侧有外键。

    【讨论】:

    • 一个问题可以有多个解决方案,因此在解决方案表中(多个表,每种解决方案的每个表)都会有一个问题表的外键。现在的问题是您不需要在问题类中有解决方案的实例。
    • 好的,现在我明白了,我正在为您的案例编辑答案,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2017-11-13
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多