【问题标题】:Parent Entity as Owner in unidirectional One To One Relationship Hibernate父实体作为单向一对一关系休眠中的所有者
【发布时间】:2018-08-10 22:45:02
【问题描述】:

考虑以下数据库模型:

在数据模型中,我有两个共享相同主键的表,强实体是 Account,弱实体是 User(用户拖动 Account 的 PK)。牢记这一点:是否可以在 Account 和 User 之间的单向关系中将 Account 实体作为 Owner 实体?可以的话怎么映射,不然怎么不行?

非常感谢!

【问题讨论】:

    标签: java hibernate jpa one-to-one


    【解决方案1】:

    您可以使用@PrimaryKeyJoinColumn

    @Entity
    public class Account {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        @OneToOne(cascade = CascadeType.ALL, mappedBy = "account")
        @PrimaryKeyJoinColumn
        private User user;
        ...
    }
    

    用户表:

    @Entity
    public class User {
        @Id
        private Long id;
        private String name;
        .....
    }
    

    查看this 了解详情。

    【讨论】:

    • 感谢您的回答,但我要问的是,如果在我提出的场景中可能存在单向关系,那么您的解决方案会引发双向关系,这不能回答我的问题。如果无法得到我的建议,请告诉我。
    • 我认可您的努力,但尽管此映射似乎很好,但如果我创建一个帐户和一个用户的 2 个实例并将用户分配给该帐户,然后尝试保留该帐户,它会产生一个完整性错误,这意味着hibernate不能自动管理关系。为了让它工作,它必须手动完成,首先账户实体必须持久化,以便 hibernate 生成它的 id,然后将此 id 分配给用户实体以使其工作。非常感谢!
    • 我倾向于这个问题的答案不是如果我们从数据库的角度思考,即使 hibernate 是从中抽象出来的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多