使用Oracle 10g时,Hibernate关于后续锁定的警告

13
我正在使用Hibernate 4.3.0.Final / JPA 2.1和Hibernate Search 4.5.0.Final,在WildFly 8.0.0.Final上运行。尽管我的应用程序运行良好,但是在索引创建时,我会收到Hibernate的警告信息。

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);
    }
}

我做了一些搜索,找到了一种“解决方案”,或者更好地说是消除警告的方法。然而,我不知道这是否是最佳解决方案。该解决方案建议扩展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;
    }
}

我在这里这里找到了解决方案。同时,还有一个bug报告曾经提到过这个警告,但被拒绝了。目前我没有发现其他可用的解决方案。

1个回答

17

不必担心此警告,记录它是一个错误:您应该忽略它或更改日志记录器配置以忽略它。

我已经打开了 HHH-9097


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接