Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MassIndexer.createIndexer()在索引多个实体类型时冻结_Java_Hibernate_Lucene_Hibernate Search - Fatal编程技术网

Java MassIndexer.createIndexer()在索引多个实体类型时冻结

Java MassIndexer.createIndexer()在索引多个实体类型时冻结,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,就本问题而言,我有两个商业课程: @Entity @Indexed public class MyClassOne implements MyInterface { @Id private Integer id; @OneToMany(orphanRemoval = true) @Cascade(CascadeType.ALL) private List<MyClassTwo> myClassTwos; @Field pr

就本问题而言,我有两个商业课程:

@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;
}
然后,我使用以下代码创建索引(如Hibernate搜索文档中所建议的):

问题是,它冻结了。createIndexer()无限期地挂起,我什么也做不到

如果我删除了其中一个类参数,那么剩余的类将被索引,并且一切都可以完美地工作——当我试图同时索引这两个实体时,这只是一个问题。我的理解是,默认情况下,hibernate会为每个实体创建一个单独的索引,我当然没有做任何配置来改变这一点

为清楚起见,我删除了@AnalyzerDef、@Boost注释以及@Field和@Indexed注释参数,但删除这些参数对根本问题没有影响。我留下的事实是,两个类都实现了相同的接口,其中一个类包含另一个类的列表(尽管请注意,这不是@IndexEmbedded),以防相关

(我还发现一个线程表明线程池大小是个问题,所以我将其增加到50,但运气不好)

想必我做错了什么,但我没有主意——有人能帮我吗


谢谢

当数据库连接用完时,它可能会冻结;它依靠数据库池库的连接超时来“释放”,从而有效地实现死锁

与其增加线程池,不如降低线程池,以免耗尽连接;每个线程将使用一个。或者,如果可以,提高到数据库的最大允许连接数会更有效


我已经打开了一个JIRA问题,通过某种方式检测它来解决这个问题,最坏的情况是更好地记录它。

我遇到了同样的问题,索引实体一个接一个地帮助解决了这个问题

fullTextEntityManager.createIndexer(MyClassOne.class).startAndWait();
fullTextEntityManager.createIndexer(MyClassTwo.class).startAndWait();
Search.getFullTextSession(session).createIndexer(MyClassOne.class, MyClassTwo.class).startAndWait();
fullTextEntityManager.createIndexer(MyClassOne.class).startAndWait();
fullTextEntityManager.createIndexer(MyClassTwo.class).startAndWait();