所以我决定给OpenJPA一个去,到目前为止我没有运气。 我尽力做到了这一点:http://struberg.wordpress.com/2012/01/08/jpa-enhancement-done-right/ org.apache.openjpa.persistence.ArgumentException:类“com.MyClass”没有得到增强。是问题所在。OpenJPA,Tomcat 7,Eclipse和maven-enchance不起作用
我试图按照这些步骤来解决它,因为我对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清洁工艺类 然后,它成功地增强了班级我已经指定。
启动服务器,并尝试一个简单的持久化工作与休眠,这让我:
OpenJPA的-2.2.0-r422266:1244990致命用户错误> org.apache.openjpa。 persistence.ArgumentException:“类com.myproject.core.domain.MyClass”类型尚未增强。 FailedObject:[email protected] [java.lang.String] at org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1823) at org.apache.openjpa.meta .ClassMetaData.resolve(ClassMetaData.java:1797) at org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:822) at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:719 ) at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:643) at org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:411) at 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>
坦率地说,我不明白如何合理的工作流程应该看起来像这样,即使我得到它的工作。也许使用另一种策略或什么?
会喜欢一些指针和提示,当然有助于解决问题。
干杯
如果我补充说它给了我一些像“在MyClass上启动enchancer”,但它打破说,ClassNotFoundException它的命名。很奇怪 –
我认为你的persistence.xml中的包含标记设置错误。确保它被设置为com.MyClass类所在的位置。 – Templar