Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 如何为其他实体共享一个实体';独身癖_Jpa - Fatal编程技术网

Jpa 如何为其他实体共享一个实体';独身癖

Jpa 如何为其他实体共享一个实体';独身癖,jpa,Jpa,我有一个像这样的实体 @Entity class Property extends BaseEntity { @Basic private String name; @Basic private String value; } 基本意图是将此实体用作其他实体属性 @Entity class MyEntity extends BaseEntity { @OneToMany private List<Property> propertie

我有一个像这样的实体

@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;
}

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


TL.DR:您提供的代码正在运行,我个人更喜欢它。还有其他方法,但速度稍慢,等等。

有很多方法,这取决于您的“财产”以及您希望在其他实体之间共享的级别。例如,YourEntity、MyEntity和其他人能否引用完全相同的属性?或者每个引用实体的权限都是唯一的。如果是后者,您可能希望查看聚合集合,以便每个拥有的实体都有自己的属性表作为其引用,并且属性不需要唯一的ID。如果要共享,则需要自己的ID来标识它,或者您可以将名称/值对设为复合ID
@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;
}