我有三个实体Cusomer
,Project
,Package
。我想添加一个新的实体Role
。前三个提到的实体中的每一个都可以扮演多个角色。每个角色只能属于一个customer
或 project
或 package
。
有什么方法可以确保角色只能属于这三种类型中的一种?
我考虑了两种方法:
1)
public class Role {
// attributes
@ManyToOne
private Customer customer;
@ManyToOne
private Project project;
@ManyToOne
private Package package;
}
我必须确保它们可以为空。因此,我只能设置三个中的一个,而将另一个设置为空。我的业务逻辑必须确保三个集合之一始终为空,其他两个集合为空,因为我认为这不可能在数据库中进行控制。
2)
public class Customer {
// attributes
@OneToMany
private List<Role> roles;
}
public class Project {
// attributes
@OneToMany
private List<Role> roles;
}
public class Package {
// attributes
@OneToMany
private List<Role> roles;
}
那样,我将不必使任何内容为空,但是,我又必须确保在我的业务逻辑中,一个角色仅属于三个实体之一,因为没有办法在数据库中实现它。 / p>
多对一或一对多方法更好吗?还是有更好的解决方案?