将动态属性添加到JPA实体

时间:2013-09-22 09:29:15

标签: java java-ee jpa dynamic

我正在为所有客户构建一个具有共同实体基础的网络应用

现在有些客户需要其他字段,但我不想添加所有字段。我想到了类似的东西:

@Embeddable
public class AdditionalDetails {

private String label;

private String text;

public AdditionalDetails() {}


    // autogenerated getters and setters, hashCode(), equals()
} 
    
@Entity
public class BusinessObject {

    @Id
    @Column(name = "string_id")
    private long id;

    @ElementCollection(fetch=FetchType.EAGER)
    @MapKey(name = "language")
    @CollectionTable(schema = "label", name = "multilingual_string_map", 
              joinColumns = @JoinColumn(name = "string_id"))
    private Map<String, AdditionalDetails> map = new HashMap<String, AdditionalDetails>();

    public BusinessObject() {}

    // autogenerated getters and setters, hashCode(), equals()
}

问题不在于我要配置哪些属性由BusinessObject添加?

1 个答案:

答案 0 :(得分:0)

您可以从基类中删除@Entity注释。 然后从基类创建子类并将@Entity注释添加到子类。 现在,您可以避免将所有属性放在基类中,而是可以将它们添加到适当的子类中。