gpt4 book ai didi

java - 进行自左连接时意外离开

转载 作者:行者123 更新时间:2023-12-01 12:25:29 25 4
gpt4 key购买 nike

我正在尝试多次在同一张表上进行自左连接。每当我执行这个查询时,我都会遇到异常。

org.hibernate.hql.internal.ast.QuerySyntaxException 类消息意外标记:第 13 行第 33 列附近的 LEFT

Query query = null
def hql = $/
SELECT
c1.id,
c1.parentId,
c1.navDepth,
c1.navOrder,
c1.title,
c1.fileName,
// aliasing filenamepath column as filepath.
REPLACE(c1.fileNamePath, 'home/', '') AS filepath
FROM Content AS c1

WHERE 0 = 0
LEFT JOIN Content AS c2
ON c1.col1 = c2.fileNameLookup
AND c1.col1 = c2.col1

LEFT JOIN Content AS c3
ON c1.col2 = c3.fileNameLookup
AND c1.col2 = c3.col2

LEFT JOIN Content AS c4
ON c1.col3 = c4.fileNameLookup
AND c1.col3 = c4.col3

LEFT JOIN Content AS c5
ON c1.col4 = c5.fileNameLookup
AND c1.col4 = c5.col4

LEFT JOIN Content AS c6
ON c1.col5 = c6.fileNameLookup
AND c1.col5 = c6.col5

LEFT JOIN Content AS c7
ON c1.col6 = c7.fileNameLookup
AND c1.col6 = c7.col6

LEFT JOIN Content AS c8
ON c1.col7 = c8.fileNameLookup
AND c1.col7 = c8.col7

LEFT JOIN Content AS c9
ON c1.col8 = c9.fileNameLookup
AND c1.col8 = c9.col8

LEFT JOIN Content AS c10
ON c1.col9 = c10.fileNameLookup
AND c1.col9 = c10.col9

AND c1.isNavItem = 1
GROUP BY c1.id
ORDER BY c1.navDepth, c1.navOrder
/$
//def result = Content.executeQuery(hql)
query = Content.executeQuery(hql).setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE)
.addScalar("filepath", new StringType())
List<Map<String,Object>> result = query.list()
return result

任何人都可以让我知道我做错了什么,我怎样才能让它工作?

最佳答案

  1. WHERE 放错了位置:

    FROM 
    WHERE 0 = 0
    LEFT JOIN Content AS c2

    应该是:

    FROM
    LEFT JOIN
    LEFT JOIN
    ...
    WHERE
    GROUP BY
    ORDER BY
  2. 查询中没有要设置的文件路径参数,如果它必须位于 WHERE 子句中而不是 SELECT 子句中:

    addScalar("filepath", new StringType())
  3. 您编写了一个包含 LEFT JOINS 和 ON 子句的 SQL 查询,但这是 native SQL 查询语法。在 HQL 中,您加入可导航实体关联,并且没有 HQL ON 子句。

    要模拟 ON 子句,您需要使用 the with directive :

    from Cat as cat
    left join cat.kittens as kitten
    with kitten.bodyWeight > 10.0
  4. 首先尝试不使用变压器。只需执行查询并让它首先返回一个列表即可。如果有效,请尝试使用变压器。如果没有,您的查询语法仍然存在问题。

关于java - 进行自左连接时意外离开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26377514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com