問題

Hibernate開発では、JPA @OneToManyアノテーションを持つモデルクラスが含まれています。

    @OneToMany(
    cascade=CascadeType.ALL,
    fetch = FetchType.LAZY, mappedBy = "user")
    public Set<Debit> getDebits() {
        return this.debits;
    }

WebアプリケーションがWebSphere 7にデプロイされると、次のエラー・メッセージが表示されます。

Caused by: java.lang.NoSuchMethodError: javax/persistence/OneToMany.orphanRemoval()Z
    at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1912)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707)
    ... 118 more

__P.S `hibernate-jpa-2.0-api-1.0.0.Final.jar`はライブラリパスに含まれています。

解決策


OneToMany.orphanRemoval`はJPA 2.0で指定されており、WebSphere 7には古いJPAライブラリが含まれているようです。これは

hibernate-jpa-2.0-api-1.0.0.Final.jar`の前にロードされています。

これを修正するには、

WAS7__FOLDER \ AppServer \ java \ jre \ lib 'にあるWebSphereの最優先クラスローダフォルダにJPA 2.0(

hibernate-jpa-2.0-api-1.0.0.Final.jar`)ライブラリを置きます。 \ ext`です。 WebSphereサーバー・インスタンスを再始動して、有効にします。

WebSphere Web Console – >トラブルシューティング – > Class loader viewerにアクセスし、ライブラリがロードされていることを確認します。


JPA2-On-WAS7、タイトル= "JPA2-On-WAS7"、width = 640、height = 307

現在、WebSphere 7は常にHibernate JPA 2.0ライブラリーをロードします。


hibernate


jpa

リンク://タグ/websphere/[websphere]