[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-1759) ClasscQueryTranslator do not make SQL Function substitution

Sandeep Vaid (JIRA) noreply at atlassian.com
Thu Jun 11 03:19:14 EDT 2009


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1759?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=33386#action_33386 ] 

Sandeep Vaid commented on HHH-1759:
-----------------------------------

i am also facing the similar problem..
 With AST, my custom function works fine but with Classic, it's giving me error..

> ClasscQueryTranslator do not make SQL Function substitution
> -----------------------------------------------------------
>
>                 Key: HHH-1759
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1759
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: query-hql
>    Affects Versions: 3.1.3
>         Environment: Hibernate 3.1.3, JDK 1.5.0_05, MySQL 4.0.20d, Tomcat 5.5.15
>            Reporter: Andrey Grebnev
>
> I have already asked about this problem in forum http://forum.hibernate.org/viewtopic.php?t=959442 but I did not get answer.
> below my text from forum's question:
> Hello 
> I have faced with the following problem. I use Hibernate-3.1.3 with ClassicQueryTranslatorFactory under MySQL 4.0.20d. 
> I need the SQL function "day". MySQL 4.0 does not have day function, but it has equal "dayofmonth". MySQLDialect.java has the following definition: 
>         registerFunction("day", new StandardSQLFunction("day", Hibernate.INTEGER) ); 
> In order to have compatibility both with MySQL 4.0 and above I have written my own Dialect which override day function in the following way: 
>         registerFunction("day", new StandardSQLFunction("dayofmonth", Hibernate.INTEGER) ); 
> With ASTQueryTranslator this dialect works corrrectly, but with Classic one it does not work!!! 
> I have examined Hibernate SRC and have found out that we have follwing code in the org.hibernate.hql.classic.SelectParser: 126 
>         else if ( getFunction( lctoken, q ) != null && token.equals( q.unalias( token ) ) ) { 
>             // the name of an SQL function 
>             if ( !ready ) throw new QueryException( ", expected before aggregate function in SELECT: " + token ); 
>             aggregate = true; 
>             aggregateAddSelectScalar = true; 
>             aggregateFuncTokenList.add( lctoken ); 
>             ready = false; 
>             q.appendScalarSelectToken( token ); 
>             if ( !aggregateHasArgs( lctoken, q ) ) { 
>                 q.addSelectScalar( aggregateType( aggregateFuncTokenList, null, q ) ); 
>                 if ( !aggregateFuncNoArgsHasParenthesis( lctoken, q ) ) { 
>                     aggregateFuncTokenList.removeLast(); 
>                     if ( aggregateFuncTokenList.size() < 1 ) { 
>                         aggregate = false; 
>                         ready = false; 
>                     } 
>                     else { 
>                         ready = true; 
>                     } 
>                 } 
>             } 
>         } 
>  
> we can see that we call 
> q.appendScalarSelectToken( token ); 
> function with original token, we do not use "render" method of org.hibernate.dialect.function.StandardSQLFunction. 
> Is this a bug of classic translator? 
> I am obliged to use Classic translator because Weblogic's problems with AST. Please give me an advice. 
> Thanks beforehand.

-- 
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

        



More information about the hibernate-issues mailing list