我正在尝试使用JDO api的DataNucleus,仅使用XML来定义持久性模型,而不添加像@PersistenceCapable这样的注释。如果我确实理解这两个文档,那么JDO和DataNucleus都应该支持这一点。
例如,如果我删除datanucleus example中的Book.java,Inventory.java,Product.java的所有注释并运行mvn clean compile
我应该完成工作,因为package.orm定义了这些类,但是我对所有这些类都有以下错误:
(主要)DEBUG [DataNucleus.MetaData] - 类 org.datanucleus.samples.jdo.tutorial.Inventory在。中指定 持久性单元(可能不包括exclude-unlisted-classes) 教程但没有注释,所以忽略
...
(主要)INFO [DataNucleus.Enhancer] - DataNucleus Enhancer已成功完成0个课程。
我缺少什么?
实际配置文件:
persistence.xml
...
<persistence-unit name="Tutorial">
<class>org.datanucleus.samples.jdo.tutorial.Inventory</class>
<class>org.datanucleus.samples.jdo.tutorial.Product</class>
<class>org.datanucleus.samples.jdo.tutorial.Book</class>
<exclude-unlisted-classes/>
...
</persistence-unit>
...
package-h2.orm
<orm>
<package name="org.datanucleus.samples.jdo.tutorial">
<!-- persistence-modifier is by default equal to: persistence-capable -->
<class name="Inventory" table="INVENTORIES" >...</class>
<class name="Product" table="PRODUCTS">...</class>
<class name="Book" table="BOOKS">...</class>
</orm>
答案 0 :(得分:1)
ORM元数据是OVERRIDE JDO元数据。因此,您需要注释或JDO XML元数据文件( package.jdo )。
persistence.xml
中的“class”条目用于指定具有注释的类,并且您说没有注释。
persistence.xml
中的“mapping-file”条目用于指定XML元数据文件......您尚未指定任何内容。