NoSuchMethodError dalam javax.persistence.Table.indexes()
Dalam aplikasi Rangka Kerja Play menggunakan Hibernate, menaik taraf kepada Hibernate 4.3.0.Final boleh menyebabkan a NoSuchMethodError pengecualian dalam javax.persistence.Table.indexes(). Inilah sebabnya perkara ini berlaku dan cara menyelesaikannya:
Punca:
Isu ini timbul akibat konflik antara versi berbeza spesifikasi JPA yang dimuatkan ke dalam laluan kelas. Main bergantung pada versi spesifik spesifikasi JPA, manakala Hibernate 4.3.0.Final memerlukan versi yang lebih baharu. Apabila kedua-dua versi hadir, konflik berlaku, yang membawa kepada ralat.
Penyelesaian:
Untuk menyelesaikan ralat ini, anda perlu mengecualikan spesifikasi JPA yang lebih lama daripada Play's classpath sambil menambah versi baharu yang diperlukan oleh Hibernate 4.3.0.Final.
Untuk Play 2.2.x, ubah suai fail build.sbt anda seperti berikut:
libraryDependencies ++= Seq( javaJdbc, javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final" )
Untuk versi Play terdahulu, rujuk kepada dokumentasi khusus untuk versi anda.
Dengan mengecualikan spesifikasi JPA yang lebih lama, anda memastikan bahawa hanya versi yang lebih baharu diperlukan oleh Hibernate 4.3.0.Final digunakan, menyelesaikan konflik dan pengecualian NoSuchMethodError.
Atas ialah kandungan terperinci Mengapa Menaik taraf kepada Hibernate 4.3.0.Final Menyebabkan NoSuchMethodError dalam javax.persistence.Table.indexes()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!