每次尝试运行此子查询时,我都会收到HQL错误。这种类型的查询应该在SQL中工作吗? HQL如何以不同的方式处理这种类型的查询?
SELECT *
FROM Table
WHERE user_Id IN (
SELECT a.user_Id
FROM Table a
WHERE a.color='Blue')
看起来HQL不支持IN? 我收到一个错误:“无法识别'SELECT'附近的输入”
答案 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”。您可能在这里使用数据库列名称。