mercredi 1 juillet 2015

Using inner join on hibernate returning token uknown

I'm having some trouble with hibernate. I'm trying to create a query to return the number of consults foreach medical ward, i just run the sql on pgAdmin and everything was well, but when i tried to create the same sql on hibernate, this has return some erros. Here the code.

SQL:

select a.cod_ala ,count(cod_consulta) as max from Consulta as c 
    inner join Medico as m on m.cod_medico = c.cod_medico
    inner join Ala as a on a.cod_ala = m.cod_ala
group by a.cod_ala  

Java:

public void getConsultasAla() {
    String sql = "select a.cod_ala, count(cod_consulta) as max from Consulta as c" 
    +" inner join Medico as m on m.cod_medico = c.cod_medico"           
    +" inner join Ala as a on a.cod_ala = m.cod_ala"
    +" group by a.cod_ala";



    Query query;
    System.out.println(sql);
    this.session = GeneralController.getSession();

    query = this.session.createQuery(sql);
    List list = query.list();
    int i = 0;
    while(list.iterator().hasNext()) {
        System.out.println(list.get(i++));
    }

}

Errors:

jul 01, 2015 8:43:14 PM org.hibernate.hql.internal.ast.ErrorCounter reportError
ERROR: line 1:149: unexpected token: on
jul 01, 2015 8:43:14 PM org.hibernate.hql.internal.ast.ErrorCounter reportError
ERROR: line 1:149: unexpected token: on
line 1:149: unexpected token: on
    at org.hibernate.hql.internal.antlr.HqlBaseParser.fromJoin(HqlBaseParser.java:1694)
    at org.hibernate.hql.internal.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1349)
    at org.hibernate.hql.internal.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1055)
    at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:701)
    at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:294)
    at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:157)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:266)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1778)
    at org.hibernate.control.ConsultsController.getConsultasAla(ConsultsController.java:473)
    at org.menu.MenuConsulta.MenuConsultas(MenuConsulta.java:97)
    at org.hibernate.MainApp.menuPrincipal(MainApp.java:80)
    at org.hibernate.MainApp.main(MainApp.java:145)

Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: on near line 1, column 98 [select a.cod_ala, count(cod_consulta) as max from org.model.Consulta as c inner join Medico as m on m.cod_medico = c.cod_medico inner join Ala as a on a.cod_ala = m.cod_ala group by a.cod_ala]
    at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
    at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
    at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:79)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:276)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1778)
    at org.hibernate.control.ConsultsController.getConsultasAla(ConsultsController.java:473)
    at org.menu.MenuConsulta.MenuConsultas(MenuConsulta.java:97)
    at org.hibernate.MainApp.menuPrincipal(MainApp.java:80)
    at org.hibernate.MainApp.main(MainApp.java:145)

PS: Sorry for bad grammar, english is my second language

Aucun commentaire:

Enregistrer un commentaire