Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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
Java 如何将对象或分组参数传递给SQL IN子句?_Java_Sql_Jpa - Fatal编程技术网

Java 如何将对象或分组参数传递给SQL IN子句?

Java 如何将对象或分组参数传递给SQL IN子句?,java,sql,jpa,Java,Sql,Jpa,我需要使用JPA通过匹配表中的2个分组参数来查找记录,但我的问题是,如果可能的话,我不知道如何在SQL中传递对象或分组参数 假设我们有用户表: USER_TABLE name VARCHAR, email VARCHAR, address VARCHAR 我需要找到分组名称和电子邮件匹配的所有用户。大概是这样的: SELECT FROM USER_TABLE WHERE (name, email) IN (('John', 'john@mail'), ('Oliver', 'oliver

我需要使用JPA通过匹配表中的2个分组参数来查找记录,但我的问题是,如果可能的话,我不知道如何在SQL中传递对象或分组参数

假设我们有用户表:

USER_TABLE

name VARCHAR,
email VARCHAR,
address VARCHAR
我需要找到分组名称和电子邮件匹配的所有用户。大概是这样的:

SELECT FROM USER_TABLE 
WHERE (name, email) 
IN (('John', 'john@mail'), ('Oliver', 'oliver@mail'));
它在SQL工具中工作,但现在我需要使用来自Java的SQL

为此,我将其设置为接受一个参数

SELECT FROM USER_TABLE 
WHERE (name, email) 
IN (?);
所以我的问题是如何传递参数,或者如何将参数分组

我尝试创建一个参数,如下所示,但它无法工作,因为它不是有效类型

String param = "('John', 'john@mail'), ('Oliver', 'oliver@mail')";
db.execute(sql, param)

这可能吗?

使用jpa查询,类似于:

@查询(“从用户s中选择*,其中s.id位于(:id)”)

页面方法名(@Param(value=“ids”)列表id)

您可以这样做:

SELECT FROM USER_TABLE 
WHERE (name, email) 
IN ((?, ?), (?, ?));

每个参数都代替单个标量值,而不是值列表,也不是任何其他SQL语法(如括号)。您需要将所有参数放入准备好的语句中,然后仅对值使用参数

尝试不使用此处建议的外部括号:@MShaposhnik它不起作用。引起问题的不是括号,而是将两个参数分组为一个参数。我可能会使用StringBuilder,因为这似乎是唯一的方法。不是安全的,而是唯一的方法。Thanks不是JPQL查询。JPQL中没有“*”。剩下的是SPRING数据,这在问题中没有提到,分组在哪里?谢谢Bill,我会这样做的。