2016-05-24 8 views
-2

私はHibernate 4.3.6を使用しており、アノテーションベースのパーシスタンス定義を使用していました。 tomcat 8.0では正常に動作していました。しかし、私がWAS Libertyプロファイル8.5.5.7にデプロイしたとき、以下のような根本的な例外が発生し、その理由を把握することができませんでした。何人かは、Hibernateを5.1.0にアップグレードするように言いましたが、動作しませんでした。私は開発のためにEclipseを使用しています。私はSpring 4.0.1も使用しています。javax.persistence.TableのNoSuchMethodError

Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index; 
    at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:936) 
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:824) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3788) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3742) 
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:343) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:431) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:416) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) 
    ... 57 more 
+0

もはい、その方法が明確にJPA 2.1の一部であり、あなたがJPAプロバイダとJPAジャーの一貫性のあるバージョンを使用していない(と任意の手段を「それは動作しませんでした」...「誰かがアップグレードすることを告げました」あなたは正しくアップグレードされませんでした)。これはここまで何度も尋ねられており、すべて検索で検索可能です。 –

答えて

0

@NeilStocktonが示唆したようにあなたは、バージョン2.1以前のJPAの注釈とともに、WebSphere Libertyクラスパスに間違ったjarを持っています。

まず、Eclipseのソースにいつも@Table(indexes = {})を追加しようとします。正しくインポートできる場合は、Eclipseのクラスパスに正しいhibernate-jpa-2.1-api-1.0.0.Final.jar(Hibernate 5用)があります。その後、@Table(indexes = {})を削除してください。

@Tableアノテーションが読み込まれたjarを見つけるには、このコードをSpringの設定とは関係なくどこかで実行してみてください。これにはContextListenerを使用できます。

URL url = Thread.currentThread().getContextClassLoader() 
    .getResource("javax/persistence/Table.class"); 
System.out.println(url); 
関連する問題