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);