簡體   English   中英

帶有關聯枚舉字段的休眠搜索的查詢結果

[英]query results with hibernate-search with associated enumeration field

我正在嘗試使具有以下關聯的實體的文檔索引:

DocVersion:

@Entity
@Indexed
public class DocVersion implements Serializable {
...
    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "doc_uuid")
    @IndexedEmbedded
    private Document2 document2;
...
}

書2:

@Entity
@Indexed
public class Document2 implements Serializable {
...
    @Column(name = "entityState")
    @Enumerated(EnumType.STRING)
    @Field(bridge=@FieldBridge(impl=EnumBridge.class), index=Index.YES)
    private EDocState eDocState;
...
}

這就是我查詢索引的方式(僅用於測試目的):

FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
        try {
            fullTextEntityManager.createIndexer().startAndWait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory()
                .buildQueryBuilder()
                .forEntity(DocVersion.class)
                .get();

        org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword()
                .onField("document2.eDocState").matching("HARD_DEL")
                .createQuery();
List results = fullTextEntityManager.createFullTextQuery(luceneQuery, DocVersion.class)
                .getResultList();

但是我得到的不是結果:

WARNING: org.hibernate.search.bridge.BridgeException: Exception while calling bridge#objectToString
    entity class: com.nws.vedica.model.entity.DocVersion
    entity property path: document2.eDocState
    field bridge: TwoWayString2FieldBridgeAdaptor [stringBridge=org.hibernate.search.bridge.builtin.EnumBridge@60942b8b]

那是什么意思呢? 我是否需要為枚舉實現一些特定的橋梁(看起來如何)? 這只是值枚舉,所以我認為問題出在別的地方。

請協助我獲得結果。

我正在使用的軟件包:hibernate-search-orm:5.9.3。

您不需要實現特定的橋,實際上恰恰相反:橋已經存在,因此Hibernate Search希望您將枚舉值傳遞給查詢,而您傳遞的是String值。

嘗試將.matching("HARD_DEL")替換為.matching(EDocState.HARD_DEL)

注意:我懷疑其余的堆棧跟蹤信息會告訴您有關類強制轉換異常的信息,該異常可能已經提示您。 為了您自己,您可能不應該這樣隱藏堆棧跟蹤,堆棧跟蹤可能包含有價值的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM