NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index; dalam Hibernate
Semasa menggunakan aplikasi Play Framework dengan Hibernate 4.3.0.Final, pengguna mungkin menghadapi pengecualian NoSuchMethodError dalam javax.persistence.Table.indexes(). Isu ini khusus untuk Hibernate 4.3.0.Final dan tidak berlaku dalam versi sebelumnya seperti 4.2.5.Final.
Punca Punca
Ralat berlaku kerana konflik antara versi berbeza spesifikasi Hibernate dalam laluan kelas aplikasi. Artifak play-java-jpa bergantung pada API Hibernate 2.0 (hibernate-jpa-2.0-api), manakala Hibernate 4.3.0.Final memperkenalkan API Hibernate 2.1. Akibatnya, kedua-dua versi API wujud bersama dalam laluan kelas, yang membawa kepada pengecualian NoSuchMethodError.
Penyelesaian
Untuk menyelesaikan isu ini, kecualikan pergantungan API Hibernate 2.0 daripada fail build.sbt sambil memasukkan Hibernate 4.3.0.Final. Berikut ialah versi fail build.sbt yang dikemas kini:
libraryDependencies ++= Seq( javaJdbc, javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final" )
Nota:
Atas ialah kandungan terperinci Mengapa Apl Rangka Kerja Play Saya dengan Hibernate 4.3.0.Final Throw a NoSuchMethodError: javax.persistence.Table.indexes()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!