Java 与多个实体关联的实体
我有多个这样的实体:Java 与多个实体关联的实体,java,hibernate,oop,design-patterns,Java,Hibernate,Oop,Design Patterns,我有多个这样的实体: Public class User{ int age; . . . @OneToMany private Set<Comment> comments = new HashSet<>(); } 公共类用户{ 智力年龄; . . . @独身癖 private Set comments=new HashSet(); } 及 公共类产品{ 字符串名; . . . @独身癖 private Set comme
Public class User{
int age;
.
.
.
@OneToMany
private Set<Comment> comments = new HashSet<>();
}
公共类用户{
智力年龄;
.
.
.
@独身癖
private Set comments=new HashSet();
}
及
公共类产品{
字符串名;
.
.
.
@独身癖
private Set comments=new HashSet();
}
还有更多。如您所见,注释可能与用户、产品等相关。我怎么能有一个注释类来做这样的事情呢
解决方案:
Public class Commentable{
private Set<Comment> comments = new HashSet<>();
}
公共类可注释{
private Set comments=new HashSet();
}
非常感谢您可以拥有一个
评论
类,只要它是单向的,并且拥有方(负责关系的人)是用户
,Product
等。这要求您拥有像UserComment
和ProductComment
这样的映射表,并向注释集添加一些内容
如果注释很简单,它们也可以被嵌入,直接存储在映射表中
如果您不想使用任何映射表,并且希望使用JPA方式,那么您可以使用解决方案选项1,将Comment
作为UserComment
等的基类。然后,您可以使用单个表继承策略,并为“容器”(用户、产品等)ID添加/重用列
这样做的一个缺点是,每个容器可能会有一个额外的列,或者如果重用列(即,该值的含义取决于鉴别器),则容器实体需要具有类型兼容的ID(例如,所有整数或字符串),并且可能无法使用外键约束(除非您的数据库支持“部分”外键约束,我知道没有数据库支持)
Public class Commentable{
private Set<Comment> comments = new HashSet<>();
}