我应该如何映射一个独特的OneToOne Hibernate关系?

时间:2017-08-09 05:20:36

标签: java hibernate jpa

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

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

1 个答案:

答案 0 :(得分:0)

您可以在数据库中为所需字段创建唯一约束。字段的唯一性与唯一映射无关。您还可以为外键字段添加唯一约束 - 这将确保您在数据库本身中拥有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的设计意味着它意味着:对于一个实体,将会有另一个实体。因此,对于每个帐户 - 只需一个凭证。