我有两个实体:凭据和帐户。凭证实体应具有唯一的电子邮件,唯一的昵称和密码,所有字符串。帐户必须具有一个唯一的凭据和其他非重要属性。我想过在Credential和Account上使用电子邮件作为PK。这是一个好方法吗?我试图实现这一点,但你可以看到here我根本没有解决我的问题。这样做有什么好的编码实践?
独特的OneToOne会被认为是一个不错的选择吗?我应该如何使用JPA表示法呢?我知道这个问题可以基于意见,但我甚至没有选择的选择。我想知道我应该遵循哪些基本规则来实现这个概念。
答案 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的设计意味着它意味着:对于一个实体,将会有另一个实体。因此,对于每个帐户 - 只需一个凭证。