Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在条件查询中传递参数列表,jpa?_Jpa_Criteria Api - Fatal编程技术网

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

如何在条件查询中传递参数列表,jpa?,jpa,criteria-api,Jpa,Criteria Api,我是JPA新手,但我必须用这种技术来实现我的项目 我试图通过CriteriaQuery一些数据库查询来构建,但不知道如何将参数列表传递给下面的代码: CriteriaBuilder qb = em.getCriteriaBuilder(); CriteriaQuery<MyClass> c = qb .createQuery(MyClass.class); Root<MyClassPK> p = c .fro

我是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);
CriteriaBuilder qb=em.getCriteriaBuilder();
标准查询c=qb
.createQuery(MyClass.class);
根p=c
.from(MyClass.class);
c、 式中(qb.equal(qb.trim((p.get(“id”)).get(“Name”))),
这里是如何通过的参数列表??);
TypedQuery q=em.createQuery(c);

由于复杂的数据库架构,代码看起来相当复杂。有人能告诉我如何解决我的问题吗?或者可能只有一个解决方案是针对(…)

如果我很理解你的问题,你需要一个“处于”状态:

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);
CriteriaBuilder qb=em.getCriteriaBuilder();
CriteriaQuery c=qb.createQuery(MyClass.class);
根p=c.from(MyClass.class);
//c.where(qb.equal(qb.trim((p.get(“id”)).get(“Name”)),这里是如何通过的参数列表??);
列表名称=新的ArrayList();
名称。添加(“名称1”);
名称。添加(“名称2”);
名称。添加(“名称3”);
c、 其中(qb.trim((p.get(“id”)).get(“Name”)).in(Name));
TypedQuery q=em.createQuery(c);

谢谢您的回答!周末后我会试着做这份工作,很幸运,你的小费不管用。我的eclipse下划线修剪方法说:“请在文件中重命名”。。。谢谢你关心我的朋友,但结果还是出乎我的意料。我的意思是,我需要将修剪与arg列表相等,所以它就像qb.equal(qb.trim(…),这里是arg列表)在我的情况下,你的想法不起作用:(