尝试生成索引时出现Hibernate搜索异常

尝试生成索引时出现Hibernate搜索异常,hibernate,hibernate-search,hibernate-entitymanager,hibernate-ogm,Hibernate,Hibernate Search,Hibernate Entitymanager,Hibernate Ogm,我正在尝试为hibernate OGM mongo DB应用程序添加hibernate搜索支持。当我尝试使用fullTextEntityManager.createIndexer(Post.class)重建索引时,我经常遇到以下异常 .startAndWait()行 HSEARCH000058:HSEARCH000116:MassIndexer操作期间出现意外错误 java.lang.NoSuchMethodError:org.hibernate.search.engine.spi.Docume

我正在尝试为hibernate OGM mongo DB应用程序添加hibernate搜索支持。当我尝试使用
fullTextEntityManager.createIndexer(Post.class)重建索引时,我经常遇到以下异常
.startAndWait()

HSEARCH000058:HSEARCH000116:MassIndexer操作期间出现意外错误 java.lang.NoSuchMethodError:org.hibernate.search.engine.spi.DocumentBuilderIndexedEntity.getIdPropertyName()Ljava/lang/String; 在org.hibernate.ogm.massindex.impl.TupleIndexer.idInString(TupleIndexer.java:128)~[hibernate-ogm-core-5.1.0.Final.jar:5.1.0.Final] 在org.hibernate.ogm.massindex.impl.TupleIndexer.createAddLuceneWork(TupleIndexer.java:119)~[hibernate-ogm-core-5.1.0.Final.jar:5.1.0.Final] 在org.hibernate.ogm.massindex.impl.TupleIndexer.index(TupleIndexer.java:109)~[hibernate-ogm-core-5.1.0.Final.jar:5.1.0.Final] 在org.hibernate.ogm.massindex.impl.TupleIndexer.index(TupleIndexer.java:89)~[hibernate-ogm-core-5.1.0.Final.jar:5.1.0.Final] 在org.hibernate.ogm.massindex.impl.TupleIndexer.runInNewTransaction(TupleIndexer.java:216)~[hibernate-ogm-core-5.1.0.Final.jar:5.1.0.Final] 在org.hibernate.ogm.massindex.impl.TupleIndexer.run(TupleIndexer.java:189)~[hibernate-ogm-core-5.1.0.Final.jar:5.1.0.Final] 在org.hibernate.ogm.massindex.impl.OptionallyWrapInJTATransaction.consume(OptionallyWrapInJTATransaction.java:104)~[hibernate-ogm-core-5.1.0.Final.jar:5.1.0.Final] 在org.hibernate.ogm.datastore.mongodb.MongoDBDialect.forEachTuple(MongoDBDialect.java:762)~[hibernate-ogm-mongodb-5.1.0.Final.jar:5.1.0.Final] 在org.hibernate.ogm.dialoge.impl.ForwardingGridDialogue.forEachTuple(ForwardingGridDialoge.java:168)[hibernate-ogm-core-5.1.0.Final.jar:5.1.0.Final] 在org.hibernate.ogm.massindex.impl.BatchIndexingWorkspace.run(BatchIndexingWorkspace.java:77)[hibernate-ogm-core-5.1.0.Final.jar:5.1.0.Final] 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[na:1.8.060] 在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[na:1.8.060] 在java.lang.Thread.run(Thread.java:745)[na:1.8.0_60]

我的配置如下。 ORM层中的POM文件:

持久性xml:

<?xml version="1.0"?>

已为使用hibernate OGM插入的记录生成索引。但无法重新索引数据库中的现有记录。如果您能给我任何解决这个问题的建议,我将不胜感激

很可能您使用了错误的Hibernate搜索版本。据我所见,这个版本的OGM应该与HibernateSearch 5.6.1.Final一起使用

您是否考虑过使用Hibernate OGM BOM以避免此类问题?如果您这样做了,那么对于Hibernate OGM及其依赖项,POM中只需要此代码段:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.hibernate.ogm</groupId>
            <artifactId>hibernate-ogm-bom</artifactId>
            <version>5.1.0.Final</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
<dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.hibernate.ogm</groupId>
        <artifactId>hibernate-ogm-mongodb</artifactId>
    </dependency>
</dependencies>

org.hibernate.ogm

.

很可能您使用了错误的Hibernate搜索版本。据我所见,这个版本的OGM应该与HibernateSearch 5.6.1.Final一起使用

您是否考虑过使用Hibernate OGM BOM以避免此类问题?如果您这样做了,那么对于Hibernate OGM及其依赖项,POM中只需要此代码段:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.hibernate.ogm</groupId>
            <artifactId>hibernate-ogm-bom</artifactId>
            <version>5.1.0.Final</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
<dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.hibernate.ogm</groupId>
        <artifactId>hibernate-ogm-mongodb</artifactId>
    </dependency>
</dependencies>

org.hibernate.ogm
.

非常感谢。切换到Hibernate Search 5.6.1.Final版本解决了这个问题。我从来不知道Hibernate OGM BOM,我期待着使用它。再次感谢。你救了我一天!谢谢。切换到Hibernate Search 5.6.1.Final版本解决了这个问题。我从来不知道Hibernate OGM BOM,我期待着使用它。再次感谢。你救了我一天!
<persistence-unit name="ogm-jpa-tutorial" transaction-type="RESOURCE_LOCAL">
    <!-- Use Hibernate OGM provider: configuration will be transparent -->
    <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>

    <class>test.y.model.Post</class>

    <properties>
        <property name="hibernate.ogm.datastore.provider" value="mongodb" />
        <!--<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform" />-->
        <property name="hibernate.ogm.datastore.create_database" value="true"/>
        <property name="hibernate.ogm.datastore.database" value="blog_db"/>
        <property name="hibernate.search.default.directory_provider" value="filesystem"/>

        <property name="hibernate.search.default.indexBase" value="/home/yasitha/lucene/indexes"/>
    </properties>
</persistence-unit>
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Type(type = "objectid")
private String id;

@Field(index = Index.YES, analyze = Analyze.YES, store = Store.YES)
@Column(name = "headline")
private String title;

@Column(name = "content")
private String description;

@Column(name = "imgUrl")
private String imgUrl;
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.hibernate.ogm</groupId>
            <artifactId>hibernate-ogm-bom</artifactId>
            <version>5.1.0.Final</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
<dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.hibernate.ogm</groupId>
        <artifactId>hibernate-ogm-mongodb</artifactId>
    </dependency>
</dependencies>