Tengo una Play Framework de la aplicación y me fue usando Hibernate 4.2.5.Final (que se recupera a través de la Maven dependencia del gerente). Me decidí a actualizar a Hibernar 4.3.0.Final, volver a compilar mi aplicación con éxito, y corrió.

Tengo la excepción de abajo, y no he sido capaz de averiguar por qué. Me degradó a 4.2.5 y este problema no se produce. Yo, entonces, trató de actualización de Hibernate con cada versión Final después 4.2.5. Es decir, que yo fui de 4.2.5.Final para 4.2.6.Final, para 4.2.7.Final, para 4.2.8.Final y, a continuación, a 4.3.Final. El problema no se produce hasta que la actualización a 4.3.0.Final.

La versión de Java de la información

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

Y de excepción:

play.api.UnexpectedException: Unexpected exception[NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:152) ~[play_2.10.jar:2.2.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110) ~[play_2.10.jar:2.2.1]
at scala.util.Success.flatMap(Try.scala:200) ~[scala-library.jar:na]
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:936) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:781) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3762) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3716) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
  • Usted está llamando a un método que no existe en la versión más reciente
InformationsquelleAutor musubi | 2013-12-22

8 Comentarios

  1. 79

    He ejecutado en el mismo problema. La cuestión aquí es que el juego java jpa artefacto (javaJpa clave en la construcción.sbt archivo) depende de una versión diferente de la especificación (version 2.0 -> "org.hibernate.javax.persistence" % "hibernate-jpa-2.0-api" % "1.0.1.Final").

    A la hora de agregar hibernate-entitymanager 4.3 esto trajo la más reciente especificación (2.1) y otro de la fábrica del proveedor para el entitymanager. Básicamente, usted llegó a tener tanto tarros en el classpath como transitivo dependencias.

    Editar su construcción.sbt archivo como este y temporalmente de corregir el problema hasta que el juego se libera una nueva versión de la jpa plugin para la nueva api de dependencia.

    libraryDependencies ++= Seq(
    javaJdbc,
    javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"),
    "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final"
    )

    Esto es para play 2.2.x. En versiones anteriores había algunas diferencias en los archivos de construcción.

    • Impresionante, funcionó! Gracias. Para referencia en el futuro, aquí hay un enlace a la documentación para la exclusión de dependencias transitivas: scala-sbt.org/0.12.2/docs/Detailed-Topics/…
    • gracias! para maven usuarios: significa no utilizar <groupId>org.hibernate.java-persistence</groupId> <artifactId>jpa-api</artifactId> más
    • Para hibernate-jpa-2.0-api Hibernate 4.2.8.Final Versión es la de trabajar 4.3.0.Final también se producirá un error.
    • En el Juego 2.2.3 libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), "org.hibernate" % "hibernate-core" % "4.3.0.Final", "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final", "com.typesafe" %% "play-plugins-mailer" % "2.2.0", "postgresql" % "postgresql" % "9.1-901-1.jdbc4", "com.google.guava" % "guava-base" % "r03", "org.apache.commons" % "commons-io" % "1.3.2" ) sigue lanzando NoSuchMethodException NoSuchMethodError:javax.persistence.JoinTable.indexes() Alguien sabe cómo resolver?
    • Soy también enfrentan el mismo problema con la Play 2.3.4 versión. Aquí está el seguimiento de la pila de jugar.la api.UnexpectedException: excepción Inesperada[NoSuchMethodError: javax.la persistencia.Tabla.índices()[Ljavax/persistencia/Index;] en play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:170) ~[play_2.11-2.3.4.jar:2.3.4 ] en play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130) ~[play_2.11-2.3.4.jar:2.3.4 ] en la scala.Opción.mapa(Opción.scala:145) ~[scala-biblioteca-2.11.1.jar:na]
    • Se enfrentan el mismo problema. Agregó que «org.hibernar» % «hibernate-entitymanager» % «4.3.8.Final» y se reemplaza con javaJpa.excluir(«org.hibernate.javax.la persistencia», «hibernate-jpa-2.1-api»), javaJpa.excluir(«org.hibernate.javax.la persistencia», «hibernate-jpa-2.0-api»), sigue teniendo el mismo problema.

  2. 70

    Hibernate 4.3 es la primera versión para implementar la JPA 2.1 especificación (parte de Java EE 7). Y es así, se espera JPA 2.1 de la biblioteca en la ruta de clases, no la JPA 2.0 de la biblioteca. Es por eso que se esta excepción: Tabla.índices() es un nuevo atributo de la Tabla, que se introdujo en JPA 2.1

    • Yo iba por el mismo camino, aunque el código donde sucede el error está llamando indexes() en una referencia de tipo org.hibernate.annotations.Table.
    • el error es NoSuchMethodError: javax.persistence.Table.indexes().
    • Yo sé, por eso no lo entiendo.
    • Usted probablemente no está mirando el código de la derecha, entonces. Consulte github.com/hibernate/hibernate-orm/blob/4.3.0.Final/…
    • Ah, ahí está. Gracias.
    • Es JPA 2.1 sólo disponibles en Java EE 7 y no SE 7? Y supongo JPA 2.0 está disponible en Java SE 7?
    • Actualización a <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.1-api</artifactId> <version>1.0.0.Draft-16</version> </dependency>
    • entonces, ¿cuál es la solución. Puedo cambiar de java EE 7 o puedo cambiar JPA 2.0 para JPA 2.1?? Si lo hago da error..
    • <!– mvnrepository.com/artifact/javax.persistence/… –> <dependencia> <groupId>javax.la persistencia</groupId> <artifactId>javax.la persistencia api</artifactId> <versión>2.2</versión> </dependencia>

  3. 14

    Que probablly tiene 2 versiones diferentes de hibernate-jpa-api en el classpath. Para comprobar que ejecutar:

    mvn dependency:tree >dep.txt

    A continuación, buscar si hay hibernate-jpa-2.0-api y hibernate-jpa-2.1-api. Y excluir el exceso de uno.

  4. 14

    Puedo actualizar mi Hibernate JPA 2.1 y funciona.

    <dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
    </dependency>
    • Pulgares Para Arriba! Que trabajó para mí (Y) 🙂
  5. 6

    Pude resolver el problema, simplemente mediante la sustitución de la api de JPA archivo jar que se encuentra jboss7/modules/javax/persistencia/api/principal con ‘hibernate-jpa-2.1-api». también con la actualización de module.xml en el directorio.

  6. 3

    De Error:
    java.lang.NoSuchMethodError: javax.la persistencia.JoinTable.índices()[Ljavax/persistencia/Index;

    La única cosa que resolver mi problema fue la eliminación de los siguientes dependencia en pom.xml:
    <dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
    </dependency>

    Y la reemplace por:

    <dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>persistence-api</artifactId>
    <version>1.0.2</version>
    </dependency>

    Espero que ayude a alguien.

  7. 0

    he experimentado el mismo problema en mi primavera de arranque de la aplicación. después de quitar manualmente javax.persistance.jar archivo de la carpeta lib. problema se corrigió. en pom.xml archivo me he quedado siguientes dependencia sólo

      <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
  8. 0

    Tuve el mismo problema, me fijo por el uso de org.hibernate.annotations.Table anotación en lugar de javax.persistence.Table en la clase de Entidad.

    import javax.persistence.Entity;
    import org.hibernate.annotations.Table;
    @Entity
    @Table(appliesTo = "my_table")
    public class MyTable{
    //and rest of the code

Dejar respuesta

Please enter your comment!
Please enter your name here