在我目前的项目中,我使用的是没有JPA注释的第三方库。
如何使用JPA和外部映射来保存该库中的对象?
答案 0 :(得分:1)
参考JPA实施的文档;任何严肃的JPA实现都应提供使用XML和注释的示例。看到 http://www.datanucleus.org/products/accessplatform_2_0/jpa/metadata_xml.html 对于XML结构的DataNucleus文档,然后参考特定的关系类型以获取不同功能的示例。
答案 1 :(得分:1)
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>
答案 2 :(得分:1)
正如所指出的,您可以使用JPA mapping file代替注释来映射非注释实体(例如来自第三方库的类)。按照任何基于映射文件的JPA教程开始。
关于自动化,我认为你不能从对象模型中自动生成orm.xml
(与物理模型相反,对象模型不包含足够的信息,例如哪个字段是PK或者,对于双向关联,哪一方是所有者等因此需要元数据)。但大多数IDE都为此提供支持,例如Eclipse。