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 クエリを実行すると、セッションのライフ サイクルがバイパスされます。このため、インデックスの自動更新は機能しません。基本的に次の 2 つのオプションがあります。

  1. 条件クエリを介して影響を受けるエンティティをロードし、それらを変更してから保存します (もちろんすべてセッション内で)
  2. Search indexing API を使用してエンティティを手動でインデックス付けします。ここでも同じ考えですが、インデックスを作成する適切なエンティティを選択/クエリする必要があります
于 2012-04-22T08:54:28.927 に答える