この質問のために、私は 2 つのビジネス クラスを用意しています。
@Entity
@Indexed
public class MyClassOne implements MyInterface {
@Id
private Integer id;
@OneToMany(orphanRemoval = true)
@Cascade(CascadeType.ALL)
private List<MyClassTwo> myClassTwos;
@Field
private String someField;
}
と
@Entity
@Indexed
public class MyClassTwo implements MyInterface {
@Id
private Integer id;
@Field
private String someField;
}
次に、次のコードを使用してインデックスを作成します (Hibernate Search ドキュメントで提案されているように)。
Search.getFullTextSession(session).createIndexer(MyClassOne.class, MyClassTwo.class).startAndWait();
問題は、これがフリーズすることです。MassIndexer.createIndexer() が無期限にハングし、どこにも行きません。
Class 引数のいずれかを削除すると、残りのクラスにインデックスが付けられ、すべてが完全に機能します。2 つのエンティティに同時にインデックスを付けようとすると問題になります。私の理解では、休止状態はデフォルトでエンティティごとに個別のインデックスを作成します。これを変更するための構成は行っていません。
わかりやすくするために、@AnalyzerDef、@Boost アノテーション、および @Field と @Indexed アノテーション パラメータを削除しましたが、これらを削除しても根本的な問題に違いはありません。両方のクラスが同じインターフェイスを実装し、関連する場合に備えて、一方のクラスには他方のリストが含まれているという事実を残しました (ただし、これは @IndexEmbedded ではないことに注意してください)。
(また、スレッドプールサイズが問題であることを示唆するスレッドを見つけたので、50に増やしましたが、うまくいきませんでした)
おそらく私は何か明らかに間違ったことをしているのですが、アイデアがありません - 誰か助けてもらえますか?
ありがとう