0

Play Framework と一緒に Hibernate Search を使用しようとしています。それは非常に簡単で簡単です。しかし、例外があります (以下を参照)。

これが私がしたことです:

依存関係を追加しました

"org.hibernate" % "hibernate-entitymanager" % "4.3.8.Final",
"org.hibernate" % "hibernate-search-orm" % "5.2.0.Final",

私はすでに Entitymanager を持っていて、うまく動作します。

次に、Hibernate Search プロパティを追加しました。

http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">

<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <non-jta-data-source>DefaultDS</non-jta-data-source>
    <class>models.User</class>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>

        <property name="hibernate.search.default.directory_provider"
                  value="filesystem"/>

        <property name="hibernate.search.default.indexBase"
                  value="/var/lucene/indexes"/>

    </properties>

</persistence-unit>

これについての新しいことは次のとおりです。

        <property name="hibernate.search.default.directory_provider"
                  value="filesystem"/>

        <property name="hibernate.search.default.indexBase"
                  value="/var/lucene/indexes"/>

ユーザーに注釈を追加しました。

@Entity
@Indexed
public class User extends Model {

     @Field(index= Index.YES, analyze= Analyze.YES, store= Store.NO)
     public String firstname;
     @Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO)
     public String lastname;
}

サーバーを起動し、サイトへのアクセスを試みます。

play.api.UnexpectedException: Unexpected exception[AbstractMethodError: org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.getConfigurationValues()Ljava/util/Map;]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:170) ~[play_2.11-2.3.7.jar:2.3.7]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130) ~[play_2.11-2.3.7.jar:2.3.7]
    at scala.Option.map(Option.scala:145) ~[scala-library-2.11.4.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130) ~[play_2.11-2.3.7.jar:2.3.7]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:128) ~[play_2.11-2.3.7.jar:2.3.7]
Caused by: java.lang.AbstractMethodError: org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.getConfigurationValues()Ljava/util/Map;
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:404) ~[hibernate-core-4.3.9.Final.jar:4.3.9.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844) ~[hibernate-entitymanager-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:75) ~[hibernate-entitymanager-4.3.8.Final.jar:4.3.8.Final]
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54) ~[hibernate-entitymanager-4.3.8.Final.jar:4.3.8.Final]
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) ~[hibernate-jpa-2.0-api-1.0.1.Final.jar:1.0.1.Final]

ご協力ありがとうございました。

4

2 に答える 2

2

5.0.0から5.3.0までのすべての Hibernate Search バージョンは、任意の Hibernate ORM バージョン4.3.x ( 4.3.0から最新の 4.3 シリーズまで、現在は4.3.10 )と互換性があります。

ただし、 hibernate-entitymanagerhibernate-ormは常に同じ正確なバージョンを選択する必要があります。これらは一緒にリリースされ、分割して混同してはならないからです。

スタックトレースから、すでに Hibernate ORM バージョン4.3.9 ( hibernate-core-4.3.9.Final.jar ) を使用していたようです。そのため、hibernate-entitymanager-4.3.8.Finalを使用するのではなく、EntityManager を4.3 にアップグレードする必要があります。 9同様に、または hibernate-core を4.3.8にダウングレードするか、両方を4.3.10にアップグレードします(おそらく最良のオプション)。

Hibernate 互換性ルール

一般に、hibernate-core と hibernate-entitymanager はまったく同じバージョンである必要があるという規則があります。次に、Hibernate Search のドキュメントを参照して、互換性のある範囲を確認してください。

この情報は、READMEリファレンス ドキュメント、またはpom.xml (Maven メタデータを解釈できる多くのツールも含む) で見つけることができます。

互換性については、ダウンロード ページにも記載されています: - http://hibernate.org/search/downloads/

ダウンロード ページと pom ファイルには、単一の特定の Hibernate ORM バージョン (ビルドに使用されたバージョン) のみが記載されています。READMEリファレンス ドキュメントでは、互換性があるバージョンの範囲が指定されています。これらは人間によって更新されるため、正確性に欠ける場合がありますが、それがうまくいかない場合はバグを報告してください。特にマイナー バージョン間で、互換性の範囲を緩和するよう努めています。

Hibernate の互換性の定義と期待は、https ://github.com/hibernate/hibernate-orm/wiki/Compatibility-Considerations に記載されています。

于 2015-06-04T23:55:09.720 に答える
0

コメントのユーザー mhlz のおかげで解決しました。Seams Entity-manager を更新する必要がありました。

于 2015-06-04T08:49:52.083 に答える