4.2. 实体映射注解


在您的 Java 类中添加注解,将实体映射到索引。

Hibernate Search API

Data Grid 使用 Hibernate Search API 定义在实体级别索引的精细配置。此配置包括注解哪些字段、应该使用分析器、如何映射嵌套对象等。

以下小节提供了适用于用于 Data Grid 的实体映射注解的信息。

有关这些注解的完整详情,您应该参考 Hibernate Search manual

@DocumentId

与 Hibernate Search 不同,使用 @DocumentId 将字段标记为标识符不适用于 Data Grid 值;在 Data Grid 中,所有 @Indexed 对象的标识符都是用于存储值的键。您仍然可以使用 @Transformable、自定义类型和自定义 FieldBridge 实现的组合来自定义如何索引密钥。

@Transformable key

每个值的键还需要进行索引,而键实例必须在 String 中转换。Data Grid 包括一些用于编码常见原语的默认转换例程,但要使用自定义密钥,您必须提供 org.infinispan.query.Transformer 的实现。

通过注解注册密钥转换

您可以使用 org.infinispan.query.Transformable 注解密钥类,您的自定义转换器实现会被自动获取:

@Transformable(transformer = CustomTransformer.class)
public class CustomKey {
   ...
}

public class CustomTransformer implements Transformer {
   @Override
   public Object fromString(String s) {
      ...
      return new CustomKey(...);
   }

   @Override
   public String toString(Object customType) {
      CustomKey ck = (CustomKey) customType;
      return ...
   }
}

通过缓存索引配置注册密钥转换

在嵌入式和服务器配置中使用 key-transformers xml 元素:

<replicated-cache name="test">
  <indexing auto-config="true">
    <key-transformers>
      <key-transformer key="com.mycompany.CustomKey"
                       transformer="com.mycompany.CustomTransformer"/>
    </key-transformers>
  </indexing>
</replicated-cache>

或者,使用 Java 配置 API (embedded 模式):

   ConfigurationBuilder builder = ...
   builder.indexing().enable()
         .addKeyTransformer(CustomKey.class, CustomTransformer.class);
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.