2014-05-05 1 views
0

J'essaie d'exécuter mon application Web basée sur le printemps sur Weblogic 10.3.6. Cette application utilise Apache Cassandra version 2.0.7 pour stocker/accéder aux données.JPA 2.0: NoSuchMethodError: javax.persistence.EntityManagerFactory.getCache() Ljavax/persistence/Cache

Nous utilisons JPA 2.0 avec un fichier persistence.xml comme suit:

<?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_2_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> 

J'ai aussi appliqué le patch 2.0 JPA dans Weblogic 10.3.6 en modifiant le fichier commEnv.sh comme ci-dessous:

# 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 

l'application est déployée avec succès, mais en essayant d'accéder au back-end via EntityManager, je vois une erreur comme suit:

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) 

Les entrées pertinentes dans le fichier pom sont:

<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> 

Quelqu'un peut-il s'il vous plaît aider en suggérant ce qui peut se tromper ici?

Cordialement,

Anand

Répondre

0

S'il vous plaît supprimer la dépendance suivante

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

Après cela, il devrait fonctionner.