【发布时间】:2017-04-18 05:03:43
【问题描述】:
我正在尝试在我的 Java Web 应用程序中实现自定义过滤器。 我想实现这样的照片:
但设计更好:))
基本上,我需要使用以下标准过滤数据: 等于、不等于、喜欢、为空、不为空、介于(日期)、大于、小于然后
因此,出于我的原因,我决定使用 Criteria API。 我以前从未使用过标准 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 在我的代码中无法识别并且编译会引发错误。
所以我的问题是:
- 我是否选择了正确的数据过滤方法
- 我的代码有什么问题?
谢谢
【问题讨论】:
标签: java hibernate jpa filter filtering