JPA 2.0: NoSuchMethodError: javax.persistence.EntityManagerFactory.getCache()Ljavax/persistence/Cache

Я пытаюсь запустить свое весеннее веб-приложение на Weblogic 10.3.6. Это приложение использует Apache Cassandra версии 2.0.7 для хранения/доступа к данным.

Мы используем JPA 2.0 с файлом persistence.xml следующим образом:

<?xml version="1.0" encoding="UTF-8" ?>
<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
# Enable JPA2.0 support
PRE_CLASSPATH="${PRE_CLASSPATH}:${MW_HOME}/modules/com.oracle.jpa2support_1.0.0.0_2-1.jar:${MW_HOME}/modules/javax.persistence_1.1.0.0_2-0-0.jar"
export PRE_CLASSPATH
0.xsd" version="2.0"> <persistence-unit name="cassandra"> <provider>com.impetus.kundera.KunderaPersistence</provider> <properties> <property name="kundera.dialect" value="cassandra"/> <property name="cql.version" value="3.0.0"/> <property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.thrift.ThriftClientFactory"/> <property name="kundera.keyspace" value="abc"/> <property name="kundera.nodes" value="localhost"/> <property name="kundera.port" value="9160"/> <property name="kundera.ddl.auto.prepare" value="validate"/> </properties> </persistence-unit> </persistence>

Я также применил патч JPA 2.0 в Weblogic 10.3.6, изменив файл commEnv.sh, как показано ниже:

# Enable JPA2.0 support
PRE_CLASSPATH="${PRE_CLASSPATH}:${MW_HOME}/modules/com.oracle.jpa2support_1.0.0.0_2-1.jar:${MW_HOME}/modules/javax.persistence_1.1.0.0_2-0-0.jar"
export PRE_CLASSPATH

Приложение развернуто успешно, но при попытке доступа к серверной части через EntityManager я вижу следующую ошибку:

Caused by: java.lang.NoSuchMethodError: javax.persistence.EntityManagerFactory.getCache()Ljavax/persistence/Cache;
        at com.impetus.kundera.persistence.EntityManagerImpl.<init>(EntityManagerImpl.java:128)
        at com.impetus.kundera.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:246)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

Соответствующие записи в файле pom:

<dependency>
    <groupId>com.impetus.kundera.client</groupId>
    <artifactId>kundera-cassandra</artifactId>
    <version>2.11</version>
</dependency>

<dependency>
    <groupId>com.impetus.kundera.core</groupId>
    <artifactId>kundera-core</artifactId>
    <version>2.11</version>
</dependency>

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.1.Final</version>
</dependency> 

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

С уважением,

Ананд


person Anand03    schedule 05.05.2014    source источник


Ответы (1)


Удалите следующую зависимость

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.1.Final</version>
</dependency> 

После этого должно работать.

person kkmishra    schedule 04.06.2014