0

我的 hql 查询似乎有什么问题?

String queryString = "SELECT A.INITIAL, A.NUMBER, A.OWNR_SCAC , A.INITIAL||A.NUMBER AS CAR," + 
            "A.LESSEE_SCAC, A.TRUK_CNT, A.EQP_TYP_CD, A.AXL_CNT, B.STABILITY_DEV_EQP," +
            "A.C_CNT, A.G_WGT, B.TRUK_AXL_CNT, A.EIN FROM DS.E_UT AS A" +
            "LEFT JOIN DS.E_PRIMARY AS B" +
            "WHERE A.INITIAL||A.NUMBER IN (:carList) AND A.INITIAL IN {:initList) AND A.NUMBER IN (:numberList)" + 
            "AND B.TRUK_AXL_CNT > 0";

错误:

org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:靠近第 1 行,第 263 列

我想它是在谈论A之后FROM DS.E_UT AS A

4

3 回答 3

2

在 HQL 中,您提供表名和列名。相反,您提供映射到表和列的类和成员变量的 Java 类名称和成员变量名称(或 getter/setter)名称。

于 2012-05-23T13:41:52.743 回答
1

我认为你应该在每一行添加一些空格。

"A.C_CNT, A.G_WGT, B.TRUK_AXL_CNT, A.EIN FROM DS.E_UT AS A" +
"LEFT JOIN DS.E_PRIMARY AS B"

会成为:

A.C_CNT, A.G_WGT, B.TRUK_AXL_CNT, A.EIN FROM DS.E_UT AS ALEFT JOIN DS.E_PRIMARY AS B

注意'ALEFT'

于 2012-05-23T13:44:51.137 回答
1

我不完全确定您的架构,或者这是否是您正在寻找的,但您可以将连接的表映射在一起。这可以使事情变得更容易一些,并且您不需要显式地加入您的查询。

这是一个小例子

该示例中的示例查询可能类似于:

SELECT p 
    FROM Person 
WHERE p.name like :name 
AND p.address.street like :street
于 2012-05-23T13:50:28.667 回答