出于这个问题的目的,我有两个商务课程:
@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 参数,那么剩余的类将被索引并且一切正常 - 当我尝试同时索引两个实体时这只是一个问题。我的理解是hibernate默认为每个实体创建一个单独的索引,我当然没有做任何配置来改变它。
为了清楚起见,我删除了@AnalyzerDef、@Boost 注释以及@Field 和@Indexed 注释参数,但删除这些对根本问题没有影响。我留下的事实是两个类都实现了相同的接口,并且一个包含另一个的列表(尽管请注意这不是@IndexEmbedded)以防万一。
(我还发现一个线程表明线程池大小是一个问题,所以我将它增加到 50 但没有运气)
大概我在做一些明显错误的事情,但我没有想法 - 任何人都可以帮忙吗?
谢谢