【发布时间】:2011-01-19 08:54:02
【问题描述】:
在我当前的项目中,我使用的是没有 JPA 注释的第 3 方库。
如何使用 JPA 和外部映射保存该库中的对象?
【问题讨论】:
标签: java jpa persistence
在我当前的项目中,我使用的是没有 JPA 注释的第 3 方库。
如何使用 JPA 和外部映射保存该库中的对象?
【问题讨论】:
标签: java jpa persistence
META-INF/orm.xml
.xsd
您不必手动映射每一列 - 只需要一些细节(即集合和 id)。所有字段都假定为列(如果已映射类)。如果没有集合,这样就足够了:
<?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
version="1.0">
<description>External entities from library X</description>
<package>com.external.library</package>
<entity class="SomeClassName">
<id>..</id>
</entity>
<entity class="AnotherClassName">
<id>..</id>
</entity>
</entity-mapping>
请注意,在指定 <package> 时,您不需要完全限定名称。
如果您想要一个不同于 orm.xml 的文件,请在您的 persistence.xml 中通过以下方式指定它:
<mapping-file>customMappingFile.xml</mapping-file>
【讨论】:
<id>。
<embeddable> 一起使用它,所以我错过了它。已更新。
请参阅您的 JPA 实现文档;任何严肃的 JPA 实现都应该提供使用 XML 和注释的示例。看 http://www.datanucleus.org/products/accessplatform_2_0/jpa/metadata_xml.html 对于 XML 结构的 DataNucleus 文档,然后参考特定的关系类型以获取不同功能的示例。
【讨论】:
正如所指出的,您可以使用 JPA mapping file 而不是注释来映射非注释实体(例如来自第三方库的类)。按照任何基于映射文件的 JPA 教程开始。
关于自动化,我不认为您可以从对象模型自动生成orm.xml(与物理模型相反,对象模型不包含足够的信息,例如哪个字段是 PK 或,对于双向关联,哪一方是所有者等,因此需要元数据)。但大多数 IDE 对此提供支持,例如Eclipse。
【讨论】: