HQL JAVA - 如何使用多个列表创建组合条件

HQL JAVA - How to make combinaison condition with multiple list

我在 HQL 中遇到了一个不寻常的问题,我还没有找到解决方案 ->

我有一个包含 A、B、C、D 列的 table,我想用 B、C、D 的组合列表做一个请求。示例:

Table

 +----------+----------+----------+----------+<br/>
 |----PK----|-----B----|-----C----|-----D----|<br/>
 +----------+----------+----------+----------+<br/>
 |-----1-----|-----2-----|-----3----|-----4----|<br/>
 +----------+----------+----------+----------+<br/>
 |-----2-----|-----5-----|-----4----|-----7----|<br/>
 +----------+----------+----------+----------+<br/>
 |-----3-----|-----7-----|-----9----|-----8----|<br/>
 +----------+----------+----------+----------+<br/>
 |-----4-----|-----6-----|-----4----|-----9----|<br/>
 +----------+----------+----------+----------+<br/>
 |-----5-----|-----6-----|-----4----|-----7----|<br/>

我有一个 B、C、D 的组合列表,例如:comb1:5、4、7 |组合 2:6、4、9。 我想检索所有具有这些组合之一的行。 在此示例中,我想检索第 2 行和第 4 行。

我试过这个方法:创建 3 个列表 B_List、C_List、D_List 和这个请求:

Select * 来自实体 e WHERE e.B in(:B_List) AND e.c in(:C_List) AND e.d in(:D_List)

但此请求可能会检索不需要的行,例如第 5 行。

我也试过了:

SELECT * 来自实体 e 其中 (e.b,e.c,e.d) 在 (:B_List,:C_List,:D_List)

但是这个语法在 HQL 中似乎是错误的。 有人有想法吗?对不起我的英语>.>

我不知道你是如何制作 :B_LIST :C_LIST 和 :D_LIST 的,但我建议你将它们制作成 :BCD_LIST (它们的串联),然后像这样比较:

Select * FROM entity e 
WHERE concat(e.B,',',e.c,',',e.d)  in(:BCD_List)