【发布时间】:2017-09-18 17:00:10
【问题描述】:
我有一个用例需要为两个表应用 IN 子句。
这两个表不通过外键约束关联,任何一个列的值也不相同,因此为了进行映射,查询使用了 CONCAT。
因此,本机查询看起来像这样:
SELECT A.requiredColumn from A, B WHERE colA LIKE CONCAT(colB, 'FOR_COMPARISON');
要在 Spring data JPA 中进行这样的连接,我不确定是否有办法进行显式映射,因为列并不完全“相等”。这些是我研究过的线程:
Selecting from Multiple Tables in Spring Data
Joining two table entities in Spring Data JPA
我为以下原生应用了相当于 IN 子句的 Spring data JPA:
SELECT A.requiredColumn
from A
where colA in (
select CONCAT(colB, 'FOR_COMPARISON')
from B);
作为:
SELECT a
from A
WHERE colA in (
select concat(
trim(colB), 'FOR_COMPARISON')
from B
);
但是,这导致:
QuerySyntaxException:期待 CLOSE,在第 1 行第 134 列附近找到“来自”
有什么想法可以解决这个问题吗?
【问题讨论】:
-
看起来您可能缺少右括号
-
感谢@jonathan.ihm,这是复制/粘贴错误。语法很好。
-
那么请用您使用的实际语句更新问题。因为错误看起来就像人们对缺少的括号所期望的那样。
-
@JensSchauder 同意,我现在更新了查询以反映已经存在的正确语法。为混乱道歉。