Hibernate ORM
  1. Hibernate ORM
  2. HHH-1902

Alias Problem... Hibernate is replacing our alias at one place but not at another place

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Duplicate
    • Affects Version/s: 3.0.3, 3.2.1
    • Fix Version/s: None
    • Component/s: query-hql
    • Labels:
      None
    • Environment:
      Hibernate 3.0.3
      Database Platform : MSSQL Server 2000
    • Bug Testcase Reminder (view):

      Bug reports should generally be accompanied by a test case!

    • Last commented by a user?:
      true

      Description

      I have a query which contains a sub query in the select list... I have defined an alias of the sub query as _sqry1 now I am putting an Order By clause in the query.... Order By is on the result of the sub query and I have given the alias of the sub query in the Order By clause

      My Query is which i am giving to Hibernate is

      SELECT (SELECT SUM(_0_ServiceCharge_0_service.chargeAmount) FROM Service AS _0_service , ServiceCharge AS _0_ServiceCharge_0_service WHERE _transportService_Challan = _0_service AND _0_service = _0_ServiceCharge_0_service.service) AS _sqry1 FROM Challan AS _Challan LEFT OUTER JOIN _Challan.transportService AS _transportService_Challan ORDER BY _sqry1

      Now the problem is that Hibernate is replacing my aliases.... it replaced my alias of the sub query from sqry1 to col_0_0 .... it replaced this alias in the select list but not in the Order By clause... i.e. it replaced the alias where I defined it but it did not replaced the alias where I used it.... so the place where I am using the alias it is giving an error as undefined alias

      The generated SQL by Hibernate:

      select (select SUM(servicecha3_.ChargeAmount) from Services service2_, ServiceCharges servicecha3_ where transports1_.TransportServiceId=service2_.ServiceId and service2_.ServiceId=servicecha3_.serviceGroupTablePKId) as col_0_0_ from Challans challan0_ left outer join TransportServices transports1_ on challan0_.TransportServiceId=transports1_.TransportServiceId left outer join Services transports1_1_ on transports1_.TransportServiceId=transports1_1_.ServiceId order by _sqry1

      when I manually replaced my alias in the Order By clause then my query run successfully

      Either Hibernate should not replace my alias, even if it is replacing then it must replace all the occurences
      I cannot use criteria, I cannot use named queries, i cannot use native sql because my queries are formed at run time, I have to specify a HQL only... This is bug in Hibernate

      Hibernate version: 3.0.5

      Name and version of the database that I am using:

      MS SQL Server 2000

      Full stack trace of any exception that occurs:

      Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute query
      at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
      at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
      at org.hibernate.loader.Loader.doList(Loader.java:2148)
      at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
      at org.hibernate.loader.Loader.list(Loader.java:2024)
      at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
      at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
      at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
      at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
      at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
      at com.daffodilwoods.framework.utils.HibernateUtil.main(HibernateUtil.java:296)
      Caused by: java.sql.SQLException: [DataDirect][SQLServer JDBC Driver][SQLServer]Invalid column name '_sqry1'.
      at com.ddtek.jdbc.base.BaseExceptions.createException(Unknown Source)
      at com.ddtek.jdbc.base.BaseExceptions.getException(Unknown Source)
      at com.ddtek.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
      at com.ddtek.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
      at com.ddtek.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
      at com.ddtek.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
      at com.ddtek.jdbc.sqlserver.tds.TDSRPCNonCursorExecuteRequest.submitPrepare(Unknown Source)
      at com.ddtek.jdbc.sqlserver.tds.TDSRPCExecuteRequest.doPrepExec(Unknown Source)
      at com.ddtek.jdbc.sqlserver.tds.TDSRPCExecuteRequest.execute(Unknown Source)
      at com.ddtek.jdbc.sqlserver.SQLServerImplStatement.execute(Unknown Source)
      at com.ddtek.jdbc.base.BaseStatement.commonExecute(Unknown Source)
      at com.ddtek.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
      at com.ddtek.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
      at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139)
      at org.hibernate.loader.Loader.getResultSet(Loader.java:1669)
      at org.hibernate.loader.Loader.doQuery(Loader.java:662)
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
      at org.hibernate.loader.Loader.doList(Loader.java:2145)
      ... 8 more

        Issue Links

          Activity

          Hide
          MF added a comment -

          So here comes a very simple testcase which showing the problem that Hibernate ignores custom column aliases.

          Show
          MF added a comment - So here comes a very simple testcase which showing the problem that Hibernate ignores custom column aliases.
          Hide
          Max Rydahl Andersen added a comment -

          updated since the test also fails on 3.2

          Show
          Max Rydahl Andersen added a comment - updated since the test also fails on 3.2
          Hide
          MF added a comment -

          I found a workaround which at least seems to work in my case
          http://forum.hibernate.org/viewtopic.php?p=2334698#2334698

          However quite a few people will thank you if this bug will get fixed soon, I guess.
          Thanks for your efforts, hibernate team!

          Show
          MF added a comment - I found a workaround which at least seems to work in my case http://forum.hibernate.org/viewtopic.php?p=2334698#2334698 However quite a few people will thank you if this bug will get fixed soon, I guess. Thanks for your efforts, hibernate team!
          Hide
          Nate added a comment -

          Any updates on this issue? This is preventing me from porting our app from TopLink 10G to Hibernate/JPA.

          Show
          Nate added a comment - Any updates on this issue? This is preventing me from porting our app from TopLink 10G to Hibernate/JPA.
          Hide
          Steve Ebersole added a comment -

          Bulk closing stale resolved issues

          Show
          Steve Ebersole added a comment - Bulk closing stale resolved issues

            People

            • Votes:
              5 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development