java - 向 JPA 实体添加动态属性

标签 java jakarta-ee jpa dynamic

我正在构建一个 Web 应用程序,为所有客户提供通用的实体基础

现在有些客户需要额外的字段,但我不想添加全部。我想到了类似的事情:

@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 添加哪些属性?

最佳答案

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

关于java - 向 JPA 实体添加动态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18942308/

相关文章:

java - 泛型和 Play 框架

java - 一对一关系并不总是有效

java.lang.IllegalStateException : Action Bar Tab must have a Callback 错误

java - 在 Spring 数据 Neo4j 中访问 @RelationshipEntiry 中的属性

java - 改造 -- 预期为 BEGIN_ARRAY,但实际为 STRING

jakarta-ee - 从 URL 中省略应用程序名称并仅使用域名访问应用程序?

java - 独立的进程,每个进程都在多线程JAVA中运行

servlets - 如何在 WAR 中使用注释定义 servlet 过滤器的执行顺序

jsp - 服务器上的servlet项目异常

java - 在扩展持久性上下文中管理实体的 JPA 最佳实践