Hibernate Search 是否适用于使用 JPA Converter 注释的字段
Does Hibernate Search work on fields annotated with JPA Converter
我使用 JPA Converter 批注将几个字段存储为 JSON,Hibernate Search 是否支持 indexing/searching 这些字段?
Hibernate Search 看不到属性的 "converted" 端(在本例中为 JSON)。
如果你有这个:
@Convert(class = MyJsonConverter.class)
private MyObject myObject;
然后所有 Hibernate Search 将看到的是 MyObject
的一个实例。您可以像使用任何其他 属性.
一样使用 @Field
或 @IndexedEmbedded
@Column(name="address")
@Convert(class = AddressConverter.class)
private Address fieldAddress;
例如,如果您将对象转换为字符串。您可以使用 CriteriaBuilder
之类的东西
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<SomeObject> query = cb.createQuery(SomeObject.class);
Root<SomeObject> from = query.from(SomeObject.class);
query.select(from).where(cb.equal(root.get("fieldAddress").as(String.class), "address in string"));
如果您使用 Spring Data JPA,您的方法是使用 @Query
@Query(select * from SOME_TABLE where ADDRESS = ?1, nativeQuery = true)
List<SomeObject> findAllByMyObj(String address);
P.S。如果你使用元模型并且你应该保存与你的查询一致的(检查文档Hibernate JPA static metamodel generator),它看起来像
query.select(from).where(cb.equal(root.get(SomeObject_.fieldAddress).as(String.class), "address in string"));
我使用 JPA Converter 批注将几个字段存储为 JSON,Hibernate Search 是否支持 indexing/searching 这些字段?
Hibernate Search 看不到属性的 "converted" 端(在本例中为 JSON)。
如果你有这个:
@Convert(class = MyJsonConverter.class)
private MyObject myObject;
然后所有 Hibernate Search 将看到的是 MyObject
的一个实例。您可以像使用任何其他 属性.
@Field
或 @IndexedEmbedded
@Column(name="address")
@Convert(class = AddressConverter.class)
private Address fieldAddress;
例如,如果您将对象转换为字符串。您可以使用 CriteriaBuilder
之类的东西CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<SomeObject> query = cb.createQuery(SomeObject.class);
Root<SomeObject> from = query.from(SomeObject.class);
query.select(from).where(cb.equal(root.get("fieldAddress").as(String.class), "address in string"));
如果您使用 Spring Data JPA,您的方法是使用 @Query
@Query(select * from SOME_TABLE where ADDRESS = ?1, nativeQuery = true)
List<SomeObject> findAllByMyObj(String address);
P.S。如果你使用元模型并且你应该保存与你的查询一致的(检查文档Hibernate JPA static metamodel generator),它看起来像
query.select(from).where(cb.equal(root.get(SomeObject_.fieldAddress).as(String.class), "address in string"));