如何从 JPA 注释的实体类生成 JPA 映射文件?

Posted

技术标签:

【中文标题】如何从 JPA 注释的实体类生成 JPA 映射文件?【英文标题】:How to generate JPA mapping file from the JPA annotated entity classes? 【发布时间】:2009-12-23 15:35:24 【问题描述】:

我正在使用 JPA 规范的 openjpa 运行时。 在开发时,我使用注释来配置 jpa 实体。 在集成、预生产和生产环境中,我使用 orm 映射文件来配置实体。请推荐一个可以从 jpa 注释生成映射文件的工具,以便可以针对不同的环境手动编辑这些映射文件。 如果已经有开源的maven-plugin;会很棒。

【问题讨论】:

【参考方案1】:

我不太了解 OpenJPA,所以可能有更好的方法来做到这一点,但一种选择是首先使用 Schema Tool 从带注释的实体生成 XML 模式文件,然后orm.xml 文件来自 schema.xml,使用 Reverse Mapping Tool。其实这个过程在this thread有讨论。

我检查了OpenJPA Maven Plugin,但它似乎不支持反向映射部分(它只有一个openjpa:schema 目标,允许创建一个包含架构映射 XML 的文件,第一个必需的操作,但第二部分没有)。因此,扩展插件以添加缺少的 openjpa:reverse-mapping 目标需要一些开发,但这应该不是一项艰巨的任务。

不过还有另一种选择。 OpenJPA 为这两种操作提供了以下 Ant 任务:

org.apache.openjpa.jdbc.ant.ReverseMappingToolTask org.apache.openjpa.jdbc.ant.SchemaToolTask

所以应该可以使用 Maven AntRun Plugin 从 Maven 调用它们。有关如何使用它们的更多详细信息,请查看文档。

【讨论】:

谢谢帕斯卡,我会试试这个建议的解决方案。

以上是关于如何从 JPA 注释的实体类生成 JPA 映射文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行时检索 JPA 中实体的映射表名称?

如何使用 JPA/Hibernate 注释将 MySQL char(n) 列映射到实例变量?

Eclipse 通过JPA自动生成注解实体

Spring Boot:如何从 JPA/Hibernate 注释中保持 DDD 实体的清洁?

JPA,如何使用同一个类(实体)来映射不同的表?

JPA 选择查询以返回带有 @ManyToOne 映射的实体