フィルター条件のDAOクラスに次のものがあります
ParameterExpression<Long> pexp = criteriaBuilder.parameter(Long.class,"empNo");
criteria.add(criteriaBuilder.equal(emp.get(Employee_.empNo),pexp));
ご覧のとおり、私の empNo は Long 型ですが、equal ではなく like を使用したい場合、どのように使用すればよいでしょうか? としてみました
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)