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 键
每个值的密钥也需要索引,必须在 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> <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);