0

我正在使用 Entitymanager 执行更新,如下所示:

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

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

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

更新后,lucene 索引不会更新。我该怎么做才能使 lucene 索引也得到更新?

亲切的问候克里斯蒂安

4

1 回答 1

1

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

  1. 通过条件查询加载受影响的实体,修改它们然后保存它们(当然都在会话中)
  2. 通过搜索索引 API 手动索引实体。不过这里的想法相同,您需要选择/查询要索引的正确实体
于 2012-04-22T08:54:28.927 回答