From: Max R. A. (JIRA) <no...@at...> - 2006-07-20 08:48:12
|
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1902?page=all ] Max Rydahl Andersen updated HHH-1902: ------------------------------------- Priority: Major (was: Blocker) > Alias Problem... Hibernate is replacing our alias at one place but not at another place > --------------------------------------------------------------------------------------- > > Key: HHH-1902 > URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1902 > Project: Hibernate3 > Type: Bug > Components: query-hql > Versions: 3.0.3 > Environment: Hibernate 3.0.3 > Database Platform : MSSQL Server 2000 > Reporter: Paras Dhawan > > > 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 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |