我有一个表(来自联接,因此没有自然的PK),其中有两个独立的列:
A B
------
1 a
1 b
1 c
2 a
2 b
在Java中,我有一个包含两个值的元素数组,例如(1,b)和(2,a)。
如何选择所有相关值?
当然,我可以通过两个不同的选择来做到这一点:
SELECT * FROM my_table WHERE A = 1 and B = b;
SELECT * FROM my_table WHERE A = 2 and B = a;
在休眠状态下将是:
SELECT * FROM my_table WHERE A = :a and B = :b
然后我将对所有输入重复查询。
当然,我不能这样做:
SELECT * FROM my_table where A in (1, 2) and B in (a, b)
因为它将返回4列。
是否可以使用不依赖于输入的Java和Hibernate在仅一个参数查询中进行查询?
我将收到一个长数组,因此不能编写N个查询,也不能手动编写依赖于输入的查询。
例如,如果我对一列感兴趣,则休眠状态下的查询将是:
SELECT * from my_table where A in (:my_array)
PS。
在Postgres中,这可以通过jsonb_to_recordset
来实现,它可以将元素数组转换成一个表,每个元素一行,然后与my_table
联接,它将只有1个参数,即数组。 / p>
答案 0 :(得分:0)
使用简单的SQL查询是可能的:
SELECT * FROM my_table WHERE (A = 1 AND B = b) OR (A = 2 AND B = a);