【问题标题】:Creating and extending JPA entity classes at runtime from config file在运行时从配置文件创建和扩展 JPA 实体类
【发布时间】:2013-05-22 21:24:03
【问题描述】:

我有 3 个实体类和更多东西。我想创建一个工具,用户可以在其中创建新的实体类和/或向现有的 3 个实体类添加额外的字段,包括 JPA 注释(例如扩展它们)。该工具应使用某种文本格式(如 xml)并从该配置文件生成类。

JAXB 是解决此问题的正确工具吗?

由于我对此完全陌生,有人可以为我指出一个教程吗?请注意,我不想序列化对象,而是从 xml 文件创建一个新类。

【问题讨论】:

    标签: java jpa jaxb


    【解决方案1】:

    如果您的工具可以使用 xml,那么 JAXB 是生成 java 类的好选择。 JAXB 可以将 xml 转换为模式,然后生成类。这是一篇有用的文章,可以帮助您了解 JAXB 的工作原理,并且可以帮助您了解它如何解决您的问题:

    http://www.javaworld.com/javaworld/jw-06-2006/jw-0626-jaxb.html

    【讨论】:

      【解决方案2】:

      注意:我是EclipseLink JAXB (MOXy) 的负责人,也是JAXB (JSR-222) 专家组的成员。

      EclipseLink JPA 提供可扩展实体,可通过其 XML 映射文件添加。虚拟属性通过采用属性名称的通用 get/set 方法访问。

      @Entity
      @VirtualAccessMethods
      public class Customer{
      
          // Real Properties
      
          ...
      
          // Code for Virtual Properties
      
          @Transient
          private Map<String, Object> extensions;
      
          public <T> T get(String name) {
              return (T) extentions.get(name);
          }
      
          public Object set(String name, Object value) {
              return extensions.put(name, value);
          }
      
      }
      

      更多信息

      【讨论】:

      • 我知道我编写了 JPA,但实际上我的应用程序使用了 Hibernate,并且有 1 个关键功能依赖于它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      相关资源
      最近更新 更多