【问题标题】:How should I map a unique OneToOne Hibernate relationship?我应该如何映射唯一的 OneToOne Hibernate 关系?
【发布时间】:2017-08-09 05:20:36
【问题描述】:

我有两个实体:凭据和帐户。凭证实体应具有唯一的电子邮件、唯一的昵称和密码,所有字符串。 Account 必须具有一个唯一且唯一的 Credential 和其他非重要属性。我考虑过使用电子邮件作为凭据和帐户上的 PK。这是一个好方法吗?我试图实现这一点,但正如你所见here 我根本没有解决我的问题。什么是一个好的编码实践来做到这一点?

独特的 OneToOne 会被认为是一个不错的选择吗?我应该如何使用 JPA 符号来做到这一点?我知道这个问题可以基于意见,但我什至没有可供选择的选项。我想知道我应该遵循哪些基本规则来实现这个概念。

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    您可以在数据库上为所需字段创建唯一约束。字段的唯一性与唯一映射无关。您还可以为您的外键字段添加唯一约束 - 这将确保您在数据库本身中有 oneToOne。有关如何创建约束的详细信息,请查看您的数据库文档。

    像这样使用oneToOne

    @Entity
    public class Account {
    
        @Id
        private Long id;
    
        // other fields...
        // some of them are unique
    
        @OneToOne(mappedBy = "account")
        private Credential credential;
        // omitted
    
    }
    
    
    @Entity
    public class Credential {
    
        @Id
        private Long id;
    
        @OneToOne
        private Account account;
    
    }
    

    OneToOne 的设计意味着它的含义:对于一个实体,将有另一个实体。因此,对于每个帐户 - 只需一个凭据。

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 2020-01-16
      相关资源
      最近更新 更多