有关使用 Oracle 10g 的后续锁定的休眠警告
2022-09-04 20:24:02
我正在使用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);
}
}
我做了一些搜索,我找到了一个“解决方案”,或者更好的说,一种抑制警告的方法。但是,我不知道这是否是最好的解决方案。该解决方案建议扩展并重写该方法以返回 。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;
}
}