如何使用Hibernate Search处理集合更新

时间:2012-04-20 11:49:53

标签: java hibernate lucene hibernate-search

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

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索引也会更新?

亲切的问候 基督教

1 个答案:

答案 0 :(得分:1)

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

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