java使用JPA持久化第三方对象 2 周,5 日 Questions & Answers 2461 在我当前的项目中,我使用的是一个没有JPA注释的第三方库 如何使用JPA和外部映射持久化该库中的对象
# 1 楼答案 正如所指出的,您可以使用JPA mapping file而不是注释来映射非注释实体(例如,来自第三方库的类)。按照任何基于映射文件的JPA教程开始 关于自动化,我认为您无法从对象模型自动生成orm.xml(与物理模型相反,对象模型没有包含足够的信息,例如哪个字段是PK,或者对于双向关联,哪一方是所有者,等等,因此需要元数据)。但大多数IDE都支持这一点,例如Eclipse
# 2 楼答案 参考JPA实施的文件;任何严肃的JPA实现都应该提供使用XML和注释的示例。看见 http://www.datanucleus.org/products/accessplatform_2_0/jpa/metadata_xml.html 有关DataNucleus docs for XML结构,请参阅特定的关系类型以获取不同功能的示例
# 3 楼答案 勾选this和this。简而言之: 创建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>
# 1 楼答案
正如所指出的,您可以使用JPA mapping file而不是注释来映射非注释实体(例如,来自第三方库的类)。按照任何基于映射文件的JPA教程开始
关于自动化,我认为您无法从对象模型自动生成
orm.xml
(与物理模型相反,对象模型没有包含足够的信息,例如哪个字段是PK,或者对于双向关联,哪一方是所有者,等等,因此需要元数据)。但大多数IDE都支持这一点,例如Eclipse# 2 楼答案
参考JPA实施的文件;任何严肃的JPA实现都应该提供使用XML和注释的示例。看见 http://www.datanucleus.org/products/accessplatform_2_0/jpa/metadata_xml.html 有关DataNucleus docs for XML结构,请参阅特定的关系类型以获取不同功能的示例
# 3 楼答案
勾选this和this。简而言之:
META-INF/orm.xml
.xsd
读您不必手动映射每个列,只需要一些细节(即集合和id)。假设所有字段都是列(如果类已映射)。如果没有收藏,像这样的东西就足够了:
请注意,在指定
<package>
时,不需要完全限定名如果您想要一个不同于
orm.xml
的文件,请在persistence.xml
中通过以下方式指定它: