我最近偶然发现了一个问题,我必须使用类似谓词来构建JPA条件,该谓词接受一个UserType
实现的自定义类型。 I' m处理的自定义类型只是String
包含一些其他信息。
我已经通过实现Hibernate的Criterion
接口完成了Hibernate标准,并且工作正常。
我现在必须为JPA执行相同的操作,但是Predicate
的Hibernates实现,即调用时创建的LikePredicate
:
CriteriaBuilderImpl.like(Expression< String>,String)
看起来很复杂。
我需要的是:
... like(Expression< MyUserType>,MyUserType)
有没有人做过这样的事情,可以给我一些提示吗?
谢谢!
答案 0 :(得分:2)
使用辅助方法解决了问题,其中CustomString
是自定义UserType
:
public static Predicate addLike(CriteriaBuilder cb, Path<CustomString> path, String val)
{
return cb.like(cb.lower(path.as(String.class)), val.toLowerCase());
}