如何使用休眠搜索处理集合更新



我正在使用实体管理器执行更新,如下所示:

Query query1 = em.createQuery("update user u set u.changed = true where u.changed is null");
query1.executeUpdate();

更改是一个注释字段,如下所示:

@Column(nullable = false)
@Field(analyzer=@Analyzer(impl=StandardAnalyzer.class))
@FieldBridge(impl=org.hibernate.search.bridge.builtin.BooleanBridge.class)
private Boolean changed = false;

更新后,lucene 索引不会更新。我该怎么做,Lucene指数也会更新?

亲切问候基督教

执行 SQL 查询会绕过会话生命周期。因此,自动索引更新将不起作用。您基本上有两种选择:

  1. 通过条件查询加载受影响的实体,修改它们,然后保存它们(当然,所有这些都在会话中)
  2. 通过搜索索引 API 手动为实体编制索引。不过,这里的想法相同,您需要选择/查询要编制索引的正确实体

最新更新