【问题标题】:OpenJPA, Tomcat 7, Eclipse & maven - enchance does not workOpenJPA、Tomcat 7、Eclipse 和 maven - 增强器不起作用
【发布时间】:2012-10-11 14:32:23
【问题描述】:

所以我决定试一试 OpenJPA,但到目前为止我还没有运气。 我尽可能地遵循了这一点:http://struberg.wordpress.com/2012/01/08/jpa-enhancement-done-right/ org.apache.openjpa.persistence.ArgumentException: "class 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 clean process-classes 然后它成功地增强了我指定的类。

    • 启动服务器并尝试使用 hibernate 的简单持久性,它给了我:

openjpa-2.2.0-r422266:1244990 致命用户错误> org.apache.openjpa.persistence.ArgumentException:类型“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>

坦率地说,我真的不明白合理的工作流程应该是什么样子,即使我让它工作。也许使用其他策略或其他什么?

希望得到一些指示和提示,当然也可以帮助解决问题。

干杯

【问题讨论】:

    标签: openjpa openjpa-maven-plugin


    【解决方案1】:

    我认为您唯一错过的就是在您的 persistence.xml 的“persistence-unit”元素中添加以下行:

    <class>com.MyClass</class>
    

    增强器在 persistence.xml 中查找这些类定义,因此它知道要增强哪些类。

    【讨论】:

    • 如果我补充说它给了我类似“在 MyClass 上启动增强器”的东西,但它会中断说 ClassNotFoundException 命名它。很奇怪
    • 我认为您的 persistence.xml 中的包含标签设置错误。确保将其设置为您的 com.MyClass 类所在的位置。
    猜你喜欢
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多