Java 期望 IDENT 找到“*”的休眠 HQL 问题
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19520628/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Hibernate HQL issue expecting IDENT found "*"
提问by lukaszrys
I need to go whole datas from relative table so I'm using somethink like this (i would use it in sql)
我需要从相关表中获取整个数据,所以我正在使用这样的想法(我会在 sql 中使用它)
private static final String SELECT_OOPR_TO_SEND = "SELECT R.* " +
"FROM offerOrderProjectRel R, offerOrder O, project P " +
"WHERE P.id = R.project_id and O.id = R.offer_order_id " +
"and O.type = 'ORDER' and (P.status = 'PENDING' or P.status ='PROTECTED')" ;
;
@SuppressWarnings("unchecked")
public List<OfferOrderProjectRel> findAllOfferOrderToSendToSalesmans() {
Query q = getSession().createQuery(SELECT_OOPR_TO_SEND);
List<OfferOrderProjectRel> list = q.list();
return list;
}
After lauching this code i'm getting that error :
启动此代码后,我收到该错误:
org.hibernate.hql.internal.ast.QuerySyntaxException: expecting IDENT, found '*' near line 1, column 10 [SELECT R.FROM offerOrderProjectRel R, offerOrder O, project P WHERE P.id = R.project_id and O.id = R.offer_order_id and O.type = 'ORDER' and (P.status = 'PENDING' or P.status ='PROTECTED')]
org.hibernate.hql.internal.ast.QuerySyntaxException:期待 IDENT,在第 1 行第 10 列附近找到“* ”[SELECT R.FROM offerOrderProjectRel R, offerOrder O, project P WHERE P.id = R.project_id and O.id = R.offer_order_id and O.type = 'ORDER' and (P.status = 'PENDING' or P.status ='PROTECTED')]
So how can i obtain all datas from column R with hibernate?
那么如何使用 Hibernate 从 R 列获取所有数据?
采纳答案by user2845946
The method createQuery
expects an HQL query string.
该方法createQuery
需要一个 HQL 查询字符串。
HQL is an object-oriented querying language.
HQL 是一种面向对象的查询语言。
HQL interprets SELECT R.*
as select the member field *
of the object R
.
HQL 解释SELECT R.*
为选择*
对象的成员字段R
。
But *
is not a member field of R
. Is it?..
但*
不是 的成员字段R
。是吗?..
To select all the member fields of R
use:
要选择所有使用的成员字段R
:
SELECT R
FROM offerOrderProjectRel R, offerOrder O, project P
WHERE P.id = R.project_id and O.id = R.offer_order_id
and O.type = 'ORDER' and (P.status = 'PENDING' or P.status ='PROTECTED')
回答by Apostolos
you use SQL query, not hql query, so it should be
您使用 SQL 查询,而不是 hql 查询,所以应该是
Query q = getSession().createSQLQuery(SELECT_OOPR_TO_SEND);