2017-08-09 69 views
0

我有两个实体:凭据和帐户。凭据实体应具有唯一的电子邮件,唯一的昵称和密码以及所有字符串。帐户必须具有一个唯一的凭证和其他非重要属性。我想过使用电子邮件作为PK凭证和帐户。这是一个好方法吗?我试图实现,但你可以看到here我没有解决我的问题。这样做会是一种很好的编码习惯吗?我应该如何映射独特的OneToOne Hibernate关系?

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

回答

0

您可以在数据库中为所需字段创建唯一约束。这些字段的唯一性与独特的映射无关。你也可以为你的外键字段添加唯一的约束 - 这可以确保你在数据库本身中有一对一的对象。检查你的数据库文档以获得关于如何创建约束的细节。

使用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设计是指什么意思:一个实体会有另外一个实体。所以对于每个帐户 - 只有一个凭证。