如何与其他实体共享实体'一对多

时间:2016-07-21 15:46:44

标签: jpa

我的实体看起来像这样。

@Entity
class Property extends BaseEntity {
    @Basic
    private String name;
    @Basic
    private String value;
}

基本意图是将此实体用作其他实体属性。

@Entity
class MyEntity extends BaseEntity {
    @OneToMany
    private List<Property> properties;
}

@Entity
class YourEntity extends BaseEntity {
    @OneToMany
    private List<Property> properties;
}

我该怎么做?我是否必须在Property中定义每个所有者的字段?

@Entity
class Property extends BaseEntity {
    @Basic
    private String name;
    @Basic
    private String value;
    @ManyToOne(optional = true)
    private MyEntity myEntity;
    @ManyToOne(optional = true)
    private YourEntity yourEntity;
    @ManyToOne(optional = true)
    private OtherEntity otherEntity;
}

1 个答案:

答案 0 :(得分:1)

基本上,这是一个很好的解决方案。可以选择创建一个连接表,它将帮助您保持实体“更清洁”(也可以用作ManyToMany。在大多数情况下,我更喜欢使用您提供的选项[简单是一个gooooood事情:)],但其他同事对这个问题有不同的看法。

TL.DR:您提供的代码正常运行,我个人更喜欢它。还有其他方法,但这些方法有点慢等。