所以我决定给OpenJPA一个机会,到目前为止我没有运气。 我尽力遵循这个:http://struberg.wordpress.com/2012/01/08/jpa-enhancement-done-right/ org.apache.openjpa.persistence.ArgumentException:类com“.MyClass”类型尚未得到增强。是问题所在。
我试着按照这些步骤来解决它,因为我对ANT非常不熟悉。
添加maven插件
<plugin>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa-maven-plugin</artifactId>
<version>2.2.0</version>
<configuration>
<includes>com/myproject/core/domain/*.class</includes>
<addDefaultConstructor>true</addDefaultConstructor>
<enforcePropertyRestrictions>true</enforcePropertyRestrictions>
<!-- Pass additional properties to the Plugin here -->
<toolProperties>
<property>
<name>directory</name>
<value>otherdirectoryvalue</value>
</property>
</toolProperties>
</configuration>
<executions>
<execution>
<id>enhancer</id>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.openjpa</groupId>
<artifactId>openjpa</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
</plugin>
所以现在尝试清理项目然后服务器,然后使用maven和 mvn清理进程类 然后它成功地增强了我指定的类。
启动服务器并尝试使用hibernate的简单持久性,它给了我:
openjpa-2.2.0-r422266:1244990致命用户错误&gt; org.apache.openjpa.persistence.ArgumentException:“class com.myproject.core.domain.MyClass”类型尚未得到增强。 FailedObject:com.myproject.core.domain.MyClass@aecda16 [java.lang.String] 在org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1823) 在org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1797) 在org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:822) 在org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:719) 在org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:643) 在org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:411) 在org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:384)
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="myproj_pu"
transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<!-- MySQL -->
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/myproject" />
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
<property name="openjpa.ConnectionUserName" value="root" />
<property name="openjpa.ConnectionPassword" value="1111" />
<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
</properties>
</persistence-unit>
</persistence>
坦率地说,即使我让它发挥作用,我也不明白合理的工作流程应该是什么样子。也许使用其他策略或什么?
会喜欢一些指示和提示,当然也可以帮助解决问题。
干杯
答案 0 :(得分:0)
我认为您唯一遗漏的是在persistence.xml的“persistence-unit”元素中添加以下行:
<class>com.MyClass</class>
增强器在persistence.xml中查找这些类定义,因此它知道要增强的类。