有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用JPA持久化第三方对象

在我当前的项目中,我使用的是一个没有JPA注释的第三方库

如何使用JPA和外部映射持久化该库中的对象


共 (3) 个答案

  1. # 1 楼答案

    正如所指出的,您可以使用JPA mapping file而不是注释来映射非注释实体(例如,来自第三方库的类)。按照任何基于映射文件的JPA教程开始

    关于自动化,我认为您无法从对象模型自动生成orm.xml(与物理模型相反,对象模型没有包含足够的信息,例如哪个字段是PK,或者对于双向关联,哪一方是所有者,等等,因此需要元数据)。但大多数IDE都支持这一点,例如Eclipse

  2. # 3 楼答案

    勾选thisthis。简而言之:

    1. 创建META-INF/orm.xml
    2. 跟着.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>