关于使用Oracle 10g进行后续锁定的Hibernate警告

Ric*_*iti 12 java oracle warnings hibernate hibernate-search

我正在使用Hibernate 4.3.0.Final/JPA 2.1,Hibernate Search 4.5.0.Final在WildFly 8.0.0.Final上运行.我的应用程序工作正常,但我正在创建索引时收到此休眠警告.

WARN org.hibernate.loader.Loader - HHH000444:遇到锁定请求,但是数据库喜欢锁定的方言报告是在单独的选择中完成的(后续锁定); 初始查询执行后,结果将被锁定

这是创建索引的方法:

public void createIndex() throws DAOException {
    FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(this.entityManager);

    try {
        fullTextEntityManager.createIndexer(Colaborador.class)
            .purgeAllOnStart(Boolean.TRUE)
            .optimizeOnFinish(Boolean.TRUE)
            .startAndWait();
        }
        catch (InterruptedException e) {
            logger.error("Error creating index", e);
            throw new DAOException(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

我做了一些搜索,我发现了一个"解决方案",或者更好的说,是一种抑制警告的方法.但是,我不知道这是否是最佳解决方案.解决方案建议扩展org.hibernate.dialect.Oracle10gDialect和覆盖public boolean useFollowOnLocking()返回的方法false.

其他重要的事情:这只发生在Hibernate版本4.2.0.Final之后.在此版本之前,没有useFollowOnLocking()方法.

新方言:

import org.hibernate.dialect.Oracle10gDialect;

public class MyOracle10gDialect extends Oracle10gDialect {

    @Override
    public boolean useFollowOnLocking() {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现这个解决方案在这里这里.还有一个错误报告拒绝此警告.我没有找到任何其他可用于此警告的解决方案.

San*_*nne 15

没有理由担心这个警告,记录它是一个错误:你应该忽略它,或者更改记录器配置以忽略它.

我打开了HHH-9097.