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

标签 java oracle hibernate warnings hibernate-search

我正在使用 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: Encountered request for locking however dialect reports that database prefers locking be done in a separate select (follow-on locking); results will be locked after initial query execute

这是创建索引的方法:

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

我找到了这个解决方案 here here 。还有一个 bug report 拒绝了这个警告。我还没有找到可用于此警告的任何其他解决方案。

最佳答案

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

我打开了HHH-9097 .

关于java - 关于使用 Oracle 10g 进行后续锁定的 Hibernate 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22712195/

相关文章:

不需要 JDBC 的 Java 嵌入式数据库

oracle - sqlplus 中不显示标题

c# - Entity Framework 上的 ORA-03111 错误

java - 定义 id 映射到表中非主列的 hibernate hbm 文件是否合适

java - Android 创建类/库以与服务器通信

java/guava - 在可迭代/迭代器的特定索引处开始和停止

java - Hadoop Mapreduce 输入拆分。这会损害我的算法吗?

sql - 看不懂SQL(Oracle)建表代码

java - Hibernate 中 get 方法的监听器

java - Hibernate(映射到交叉引用表)