0

我的过滤条件在 DAO 类中有以下内容

ParameterExpression<Long> pexp = criteriaBuilder.parameter(Long.class,"empNo");

criteria.add(criteriaBuilder.equal(emp.get(Employee_.empNo),pexp));

如您所见,我的 empNo 是 Long 类型,如果我想使用 like 而不是 equal,我该如何使用?我试过

criteria.add(criteriaBuilder.like(emp.<Long>get(Employee_.empNo), pexp)); // gives compilation errors

编辑 1

我也尝试过以下方法

criteria.add(criteriaBuilder.like(emp.<String>get(Employee_.empNo.toString()),
pexp.toString()));

and this as well

criteria.add(criteriaBuilder.like(emp.<String>get(String.valueOf(Employee_.empNo)),
String.valueOf(pexp)));

但是,当我运行时,出现以下异常

Unable to resolve attribute [org.hibernate.ejb.metamodel.SingularAttributeImpl$Identifier@a21c8
a] against path
java.lang.IllegalArgumentException: Unable to resolve attribute [org.hibernate.ejb.metamodel.Singula
rAttributeImpl$Identifier@a21c8a] against path
    at org.hibernate.ejb.criteria.path.AbstractPathImpl.unknownAttribute(AbstractPathImpl.java:116)
    at org.hibernate.ejb.criteria.path.AbstractPathImpl.locateAttribute(AbstractPathImpl.java:221)
    at org.hibernate.ejb.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:192)
4

0 回答 0