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)
我在 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)