有没有办法扩展JPA实体以添加关系?

时间:2016-06-16 20:29:05

标签: java jpa

所以我有一个属性类

public class Property {
    @Id
    @Column(name="PROPERTY_ID")
    private Long propertyId;

    @Column(name="NAME")
    private String name;

    @Column(name="TYPE_CODE")
    private Integer typeCode;

    ...getters and setters...
}

我想用它来获取有关拉动我数据库中所有属性的请求的有限信息。

但我也想要一个利用数据库约束来建立关系的类

public class ExportProperty extends Property {

    @ManyToOne
    @JoinColumn(name="TYPE_CODE")
    private ExportPropertyType type;

    @OneToMany(mappedBy="property", fetch=FetchType.EAGER)
    private Set<ExportPropertyPhoneNumber> phoneNumbers;

    ...getters and setters...
}

我可以用来获取单个属性的所有数据。

这可能吗?或者我是否需要重新考虑我的策略?

1 个答案:

答案 0 :(得分:0)

感谢Guillaume F.我能够找到解决方案。

我有一个包含任何公共字段的常见超类型

@MappedSuperclass
public class PropertySuper {
    @Id
    @Column(name="PROPERTY_ID")
    private Long propertyId;

    @Column(name="NAME")
    private String name;

    ...getters and setters...
}

只包含属性表

中的数据的类
@Entity
@Table(name = "PROPERTY")
public class Property extends PropertySuper {

    @Column(name="TYPE_CODE")
    private Integer typeCode;

    ...getters and setters...
}

以及包含所有JPA链接的类

@Entity
@Table(name = "PROPERTY")
public class FullProperty extends PropertySuper {

    @ManyToOne
    @JoinColumn(name="TYPE_CODE")
    private FullPropertyType type;

    @OneToMany(mappedBy="property", fetch=FetchType.EAGER)
    private Set<FullPropertyPhoneNumber> phoneNumbers;

    ...getters and setters...
}