我正在尝试在我的Java Web应用程序中实现自定义过滤器。
我想要实现类似于这张照片的功能:
,但希望设计更好 :))
基本上,我需要使用以下标准来过滤数据: 等于、不等于、类似于、为空、不为空、日期范围内、大于、小于
因此,出于我的目的,我决定使用Criteria API。 我以前从未使用过Criteria API,所以我正在阅读官方文档:https://docs.oracle.com/cd/E19798-01/821-1841/gjixa/index.html 其中有如下代码:
![enter image description here](https://istack.dev59.com/zaIDF.webp)
基本上,我需要使用以下标准来过滤数据: 等于、不等于、类似于、为空、不为空、日期范围内、大于、小于
因此,出于我的目的,我决定使用Criteria API。 我以前从未使用过Criteria API,所以我正在阅读官方文档:https://docs.oracle.com/cd/E19798-01/821-1841/gjixa/index.html 其中有如下代码:
CriteriaQuery<Pet> cq = cb.createQuery(Pet.class);
Metamodel m = em.getMetamodel();
EntityType<Pet> Pet_ = m.entity(Pet.class);
Root<Pet> pet = cq.from(Pet.class);
cq.where(cb.equal(pet.get(Pet_.name), "Fido")
.and(cb.equal(pet.get(Pet_.color), "brown");
我对我的代码进行了修改,现在它是这样的:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Client> cq = cb.createQuery(Client.class);
Root<Client> client = cq.from(Client.class);
cq.where(cb.equal(client.get("firstName"), "Fido").and(cb.like(client.get("lastName"), "brown")));
TypedQuery<Client> q = em.createQuery(cq);
List<Client> allClients = q.getResultList();
很不幸,我的代码中无法识别.and
,编译时会出现错误。
所以我的问题是:
- 我选择的数据过滤方法是否正确?
- 我的代码有什么问题?
谢谢。