How to pass list of arguments in criteria query , jpa?

3.1k Views Asked by At

I am new in JPA but have to implement my project in that technology

what I'm trying to do is build via CriteriaQuery some db query, but have no idea how to pass list Of parameters to the code below :

CriteriaBuilder qb = em.getCriteriaBuilder();
    CriteriaQuery<MyClass> c = qb
            .createQuery(MyClass.class);
    Root<MyClassPK> p = c
            .from(MyClass.class);

    c.where(qb.equal(qb.trim((p.<MyClass> get("id")).<String> get("Name")),
    HERE LIST OF ARGS HOW TO PASS ?? ));    
TypedQuery<MyClass> q = em.createQuery(c);

the code looks pretty complex cause of complex database architecutre. Could somebody tell me how to resolve my problem ? Or maybe only one solution is for (...) ?

1

There are 1 best solutions below

3
On

If I understood well your question, you need an "in" condition:

CriteriaBuilder qb = em.getCriteriaBuilder();
CriteriaQuery<MyClass> c = qb.createQuery(MyClass.class);
Root<MyClassPK> p = c.from(MyClass.class);

// c.where(qb.equal(qb.trim((p.<MyClass> get("id")).<String> get("Name")), HERE LIST OF ARGS HOW TO PASS ?? ));    

List<String> names = new ArrayList<String>();
names.add("name1");
names.add("name2");
names.add("name3");
c.where(qb.trim((p.<MyClass> get("id")).<String> get("Name")).in(names));

TypedQuery<MyClass> q = em.createQuery(c);