[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