我有对象Car,嵌套对象User不能为null。
class Car {
@Id
int id;
@NotNull
User user;
}
但我想升级车辆也可以选择由公司拥有。汽车不能同时归两者所有。 Hibernate中是否有一个选项可以将Car中的FK用作用户和公司?这是一个例子:
class Car {
@Id
int id;
@NotNull
Owner owner; //Can be object type User or Comapny
}
我有意做出额外的对象UserRole,它可以选择嵌套用户和公司,但是我正在寻找更好的解决方案/优化,如果在Hibernate中有可能,则不需要额外的对象:
class Car {
@Id
int id;
@NotNull
UserRole owner; //Can be object type User or Comapny
}
class UserRole{
@Id
int id; // PK, that will be used in Car
User user;
Company company;
int type; // determinates what if owner is User or Company
}
实施将用于存储API上的entites。 请建议它有更简单的方法。感谢。
答案 0 :(得分:1)
首先,你说User
不可空。然后你说同时Car
和User
不能同时拥有Company
- 意味着User
可以为空。
您不能对Company
和User
使用相同的字段。在Hibernate中,每个类都与一个实体相关联。所以我的建议是做
class Car {
@Id
int id;
@ManyToOne
User user;
@ManyToOne
Company company;
}
没有@NotNull
注释,然后只检查是否为null。
第二个选项是使用继承(如果可能)。您可以创建名为@MappedSuperClass
的{{1}},然后使CarHolder
和User
继承。那么你只能在Car里面只保留Owner
个字段。
答案 1 :(得分:0)
您可以同时使用它们:
class Car {
@Id
int id;
@NotNull
User user;
@NotNull
Company company;
}
当您需要获得汽车的所有者时,只需检查user
属性和company
null
属性即可。