5
Feb 2015
by
小川 岳史
Hibernate Search を 5.0 にアップデートしたら。。。
org.hibernate.search.exception.SearchException: Unable to find field post.id in org.wallride.core.domain.Comment
org.hibernate.search.exception.SearchException: Unable to find field post.id in org.wallride.core.domain.Comment at org.hibernate.search.engine.spi.DocumentBuilderIndexedEntity.objectToString(DocumentBuilderIndexedEntity.java:674) at org.hibernate.search.query.dsl.impl.FieldContext.objectToString(FieldContext.java:69) at org.hibernate.search.query.dsl.impl.ConnectedMultiFieldsTermQueryBuilder.buildSearchTerm(ConnectedMultiFieldsTermQueryBuilder.java:129) at org.hibernate.search.query.dsl.impl.ConnectedMultiFieldsTermQueryBuilder.createQuery(ConnectedMultiFieldsTermQueryBuilder.java:83) at org.hibernate.search.query.dsl.impl.ConnectedMultiFieldsTermQueryBuilder.createQuery(ConnectedMultiFieldsTermQueryBuilder.java:64)
なにやら、 @IndexedEmbedded でマークしている関連エンティティの ID が Lucene にインデックスされていないようなメッセージ。
どうやら、 Hibernate 5.0 から @IndexedEmbedded に includeEmbeddedObjectId という属性が追加されたみたい。
デフォルトが false なので、 true を指定してやらないと、@IndexedEmbedded でマークした対象エンティティの ID をインデックスされない。
ということで、下記で解決。
@ManyToOne(fetch = FetchType.LAZY, optional = false) @IndexedEmbedded(includeEmbeddedObjectId = true) private Post post;