Java 如何将对象或分组参数传递给SQL IN子句?
我需要使用JPA通过匹配表中的2个分组参数来查找记录,但我的问题是,如果可能的话,我不知道如何在SQL中传递对象或分组参数 假设我们有用户表: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
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,我会这样做的。