gpt4 book ai didi

java - org.hibernate.HibernateException : Error while indexing in Hibernate Search (before transaction completion)

转载 作者:行者123 更新时间:2023-12-01 22:25:41 50 4
gpt4 key购买 nike

我在使用 hibernate 的批处理事务中使用 session.clear() 时收到以下错误。

org.hibernate.HibernateException: Error while indexing in Hibernate Search (before transaction completion)

我正在使用以下代码

    try {
for (TimeSheetEntity timeSheet : timeSheets) {
timeSheet.setActive(false);
try {
session.update(timeSheet);

count++;

if (count % 250 == 0 || totalCount == count) {
System.out.println(count);

session.flush();
session.clear();
}
} catch (HibernateException ex) {
logger.error(ArchiveImpl.class.getName(), ExceptionUtils.getStackTrace(ex) + "[" + timeSheet.getId() + "] ");
} catch (Exception ex) {
logger.error(ArchiveImpl.class.getName(), ExceptionUtils.getStackTrace(ex) + "[" + timeSheet.getId() + "] ");
}
}

sessionManager.commit();
} catch (HibernateException ex) {
System.out.println(ex);
logger.error(ArchiveImpl.class.getName(), ExceptionUtils.getStackTrace(ex));
sessionManager.abort();
} finally {
}

现在如果我删除 session.clear();一切都按预期进行。有什么想法为什么我不能在带有 hibernate 搜索的批处理事务中使用clear?

最佳答案

方法Session#flush()刷新对数据库的更改。使用 FullTextSession#flushToIndexes() 刷新对 Hibernate Search 管理的索引的更改。

如果您需要clear()您的 session ,您应该刷新这两个实体,否则某些实体仍将排队等待索引,但不再被管理,这是一个问题。

当您刷新数据库时,Hibernate Search 不会自动刷新索引,因为万一您中止事务,对索引的刷新将不会撤消,因此最好明确决定是哪一个(或两者)您希望发生的冲洗。

关于java - org.hibernate.HibernateException : Error while indexing in Hibernate Search (before transaction completion),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28818793/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com