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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 17:59:27  来源:igfitidea点击:

Hibernate HQL issue expecting IDENT found "*"

javasqlhibernate

提问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 createQueryexpects 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 Ruse:

要选择所有使用的成员字段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);