OpenJPA, Tomcat 7, Eclipse & maven - расширение не работает

Поэтому я решил попробовать 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, классы процессов. Затем он успешно расширяет классы, которые я указал.

    • Запустите сервер и попробуйте простое сохранение, которое работает с Hibernate, и это дает мне:

openjpa-2.2.0-r422266: 1244990 фатальная ошибка пользователя> 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.Class. resolv (ClassMetaData.java:1797) в org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:822) в org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaData.Reta.Reg.7)..openjpa.meta..: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>

Честно говоря, я не совсем понимаю, как должен выглядеть разумный рабочий процесс, даже если я заставлю его работать. Может быть, использовать другую стратегию или что-то?

Хотелось бы немного указателей и советов и, конечно, помочь с проблемой.

ура

1 ответ

Я думаю, что единственное, что вы пропустили, это добавление следующей строки в элемент "persistence-unit" вашего файла persistence.xml:

<class>com.MyClass</class>

Энхансер ищет эти определения классов внутри файла persistence.xml, поэтому он знает, какие классы нужно улучшить.

Другие вопросы по тегам