JPA多态oneToMany

bob*_*bob 5 java polymorphism jpa

我无法弄清楚如何使用JPA干净地执行标记云,其中每个数据库实体可以有许多标记.

例如

帖子可以有0个或更多标签用户可以有0个或更多标签

在JPA中有一种更好的方法,而不是让所有实体都像Taggable抽象类那样子类吗?标签实体将引用许多Taggables.

编辑:标签云只是简化我遇到的问题的一个示例.在我的场景中,关系应该是OneToMany,其中Tag不能被重用.

谢谢

fas*_*seg 0

为什么不直接映射标签集合甚至字符串呢?

须藤代码:

@Entity
@Table(name="entities")
class MyEntity{
    long id;
    String someField;
    @ManyToMany(targetEntity=Tag.class)
    @JoinTable(name="entities_to_tags",
         joinColumns={
             @JoinColumn(name="id",  
             referencedColumnName="entity_id",
             inverseJoinColumns={
                 @JoinColumn(name="id", referencedColumnName="tag_id")})
    List<Tag> tags;
    [...getter&setter...]
}

@Entity
@Table(name="tags")
class Tag{
    @Id
    @GeneratedValue
    long id;
    String title;
    [....getter & setter...]
}
Run Code Online (Sandbox Code Playgroud)