NoSuchMethodError in javax.persistence.Table.indexes()
In Play Framework-Anwendungen, die Hibernate verwenden, wird ein Upgrade auf Hibernate 4.3.0.Final durchgeführt kann eine NoSuchMethodError-Ausnahme verursachen javax.persistence.Table.indexes(). Hier erfahren Sie, warum dies auftritt und wie Sie es beheben können:
Ursache:
Das Problem entsteht aufgrund eines Konflikts zwischen verschiedenen Versionen der JPA-Spezifikationen, die in den Klassenpfad geladen werden. Play basiert auf einer bestimmten Version der JPA-Spezifikation, während Hibernate 4.3.0.Final eine neuere Version erfordert. Wenn beide Versionen vorhanden sind, tritt ein Konflikt auf, der zum Fehler führt.
Lösung:
Um diesen Fehler zu beheben, müssen Sie die ältere JPA-Spezifikation von Play's ausschließen classpath beim Hinzufügen der neueren Version, die für Hibernate 4.3.0.Final erforderlich ist.
Für Play 2.2.x, ändern Sie Ihre build.sbt-Datei wie folgt:
libraryDependencies ++= Seq( javaJdbc, javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final" )
Frühere Versionen von Play finden Sie in der spezifischen Dokumentation für Sie Version.
Durch den Ausschluss der älteren JPA-Spezifikation stellen Sie sicher, dass nur die neuere Version von Hibernate benötigt wird 4.3.0.Final wird verwendet, um den Konflikt und die Ausnahme NoSuchMethodError zu lösen.
Das obige ist der detaillierte Inhalt vonWarum verursacht ein Upgrade auf Hibernate 4.3.0.Final einen NoSuchMethodError in javax.persistence.Table.indexes()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!