HQL子查询问题

时间:2013-11-25 18:27:50

标签: sql hql

每次尝试运行此子查询时,我都会收到HQL错误。这种类型的查询应该在SQL中工作吗? HQL如何以不同的方式处理这种类型的查询?

SELECT *
FROM Table
WHERE user_Id IN (
    SELECT a.user_Id
    FROM Table a
    WHERE a.color='Blue')

看起来HQL不支持IN? 我收到一个错误:“无法识别'SELECT'附近的输入”

3 个答案:

答案 0 :(得分:1)

在hql中如果要选择所有字段,有两种方法:

1 - 你可以删除select子句,如:

 FROM Table
 WHERE user_Id IN (
    SELECT a.user_Id
    FROM Table a
    WHERE a.color='Blue')

2 - 如果要使用select子句,则必须使用别名:

SELECT t
FROM Table t
WHERE t.user_Id IN (
    SELECT a.user_Id
    FROM Table a
WHERE a.color='Blue')

答案 1 :(得分:0)

看起来您的语法不正确。试试这个:

SELECT *
FROM Table
WHERE user_Id IN (
    SELECT a.user_Id
    FROM Table a
    WHERE a.color='Blue')

答案 2 :(得分:0)

HQL中没有“ *”。应该只有别名。

SELECT t
FROM Table t

HQL支持“输入”。 另外,请确保Java类字段名称为“ user_Id”。您可能在这里使用数据库列名称。