21

如何将整数转换为条件查询的字符串?

IE:

Predicate predicate = criteriaBuilder.like((Expression) root.get(filterKey),
                    "%" + filterValue + "%");

我想为 dataTable 组件创建过滤器.... 即对于 ID 值我想得到这样的过滤器:

如果我输入“1”,我将获得 ID 包含“1”的所有项目(223122 ID 仍然正确)

4

3 回答 3

21

我自己没有使用过这个,但是另一个问题:

使用 JPA 2.0 Criteria API 和 cast 导致生成的 JPQL 在 Hibernate 中失败

建议使用.as(String.class)afterroot.get(filterKey)来完成你想要的。

如果您使用的是 Hibernate,请注意报告的 错误

于 2012-04-19T14:56:52.350 回答
13

试试看

Predicate predicate = criteriaBuilder.like(root.get(filterKey).as(String.class),
                    "%" + filterValue + "%");
于 2018-07-23T10:06:39.310 回答
4

这为我解决了问题:

Expression<String> filterKeyExp = root.get(filterKey).as(String.class);
filterKeyExp = criteriaBuilder.lower(filterKeyExp);

Predicate predicate = criteriaBuilder.like(filterKeyExp ,"%" + filterValue.trim().toLowerCase() + "%");
于 2015-06-16T09:53:24.420 回答