像谓词一样自定义来处理自定义用户定义的类型(Hibernate UserType)

时间:2015-03-19 13:19:12

标签: hibernate java-ee jpa-2.0 hibernate-criteria

我最近偶然发现了一个问题,我必须使用类似谓词来构建JPA条件,该谓词接受一个UserType实现的自定义类型。 I' m处理的自定义类型只是String包含一些其他信息。

我已经通过实现Hibernate的Criterion接口完成了Hibernate标准,并且工作正常。

我现在必须为JPA执行相同的操作,但是Predicate的Hibernates实现,即调用时创建的LikePredicate

  

CriteriaBuilderImpl.like(Expression< String>,String)

看起来很复杂。

我需要的是:

  

... like(Expression< MyUserType>,MyUserType)

有没有人做过这样的事情,可以给我一些提示吗?

谢谢!

1 个答案:

答案 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());
}