处理用户对象和首选项对象之间的关系。每个用户都应该有一个与之关联的首选项对象。即用户和偏好之间的一对一关系。我还想强制用户不能有一个空偏好。
我的课程结构。
public class User{
...
@OneToOne(mappedBy="user")
public Preference preference;
...
}
public class Preference{
...
@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name="userid")
public User user;
...
}
当JPA生成表时,外键列位于Preference表中。在网上阅读时,首选的是在用户表中使用外键。
注意:我已将此设为双向关系。
虽然这会生成正确的表,但我想在db层中强制执行User应始终具有非null的首选项。我知道我可以在应用程序层中执行此操作,但(如果可能)db层!有没有一种方法可以实现这一目标,而不是让用户拥有所有权,而偏好是反面。