如何在条件查询中传递参数列表,jpa?

时间:2013-12-13 16:57:27

标签: jpa criteria-api hibernate-criteria

我是JPA的新手,但必须在该技术中实施我的项目

我要做的是通过CriteriaQuery构建一些数据库查询,但不知道如何将参数列表传递给下面的代码:

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);

代码看起来相当复杂,导致复杂的数据库架构。有人能告诉我如何解决我的问题吗?或者也许只有一个解决方案适用于(...)?

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你需要一个“进入”条件:

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);