【问题标题】:Does conditional Indexing work with IndexedEmbedded?条件索引是否适用于 IndexedEmbedded?
【发布时间】:2014-02-09 00:26:24
【问题描述】:

我在互联网上找不到任何东西,所以我不得不在这里问。

[如何] 我可以对嵌入式实体使用条件索引吗?我知道拦截器在@Indexed 实体的根级别上工作,但如果我能以某种方式将拦截器应用于我的索引结构中的非根实体(未使用@Indexed 注释),则不会。

EntityIndexingInterceptor.onCollectionUpdate(...) 的文档让我希望这可以实现。

“在索引实体中包含的集合上会触发 CollectionUpdate 事件,例如在使用 IndexedEmbedded 时,此事件会在此类集合中包含的每个索引域实例 T 上触发;这通常类似于 onUpdate(Object) 事件。 "

【问题讨论】:

  • 或者我是否必须在 @Transient 注释方法中这样做(并自己检查?)
  • 我认为它也可以使用 ClassBridge 来完成,对吗? @Transient 方法似乎真的很慢,因为我必须急切地获取 Collection-Type 属性。

标签: java hibernate indexing hibernate-search


【解决方案1】:

需要在索引实体上指定拦截器。它只能作为@Indexed 注释的属性使用。如果这个带注释的实体使用了@IndexedEmbedded,如果嵌入的集合发生变化,您将在拦截器中获得回调。

你的用例到底是什么?

【讨论】:

    【解决方案2】:

    是的,它有效,例如查看此处:https://docs.jboss.org/hibernate/search/4.2/api/org/hibernate/search/indexes/interceptor/EntityIndexingInterceptor.html#onCollectionUpdate(T)

    基本上,您会收到对 onCollectionUpdate 的调用,因此如果您想过滤某些内容,可以在此处进行。我猜你很担心这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      相关资源
      最近更新 更多