Java Webアプリケーションでカスタムフィルタを実装しようとしています。 私はこの写真のような何かを達成したい:Criteria API JPA
が、より良いデザインと:))
基本的には私のようなのcriteriasを使用してデータをフィルタリングする必要がありますように、等しくない、等しい 、あります空、空ではない、(より)、より小さい、
私は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
私のコードとコンパイルには認識されないと、エラーがスローされます。
だから私の質問は以下のとおりです。
- 私は自分のコードで何が間違っているフィルタリングデータ
- のための右の方法を選択したことがありますか? あなたのコードで
おかげ
どのようにそのような結果を得ることができますか?私はページネーションを作成できるようにしたいので、クエリ結果の合計数を取得し、最初の15レコードだけを取得する必要があります。 – Irakli
これは本当に良いチュートリアルです。http://www.baeldung.com/jpa-pagination – jklee