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