[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-6719) org.hibernate.sql.Template prefixes all ` and " with the generated HQL alias so not all SQL strings in formulas are generated correctly when we want to use ` in column name/table names

Strong Liu (JIRA) noreply at atlassian.com
Wed Oct 19 14:23:19 EDT 2011


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

Strong Liu commented on HHH-6719:
---------------------------------

a runnable test case (and a pull request) would very helpful

> org.hibernate.sql.Template prefixes all ` and " with the generated HQL alias so not all SQL strings in formulas are generated correctly when we want to use ` in column name/table names
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HHH-6719
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6719
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: core
>         Environment: hibernate 3.3.2.GA and up
>            Reporter: Krasimir Chobantonov
>              Labels: formula, hibernate, sql
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Using the following SQL query in descriminator formula 
> (select distinct ldt.`TYPE_NAME`  from `LIST_DATA_TYPE` ldt where ldt.`LIST_DATA_TYPE_ID` = `LIST_DATA_TYPE_ID`)
> result it 
> (select distinct ldt.listdata0_."TYPE_NAME"  from listdata0_."SF_LIST_DATA_TYPE" ldt where ldt.listdata0_."LIST_DATA_TYPE_ID" = listdata0_."LIST_DATA_TYPE_ID")
> instead of 
> (select distinct ldt."TYPE_NAME"  from "SF_LIST_DATA_TYPE" ldt where "LIST_DATA_TYPE_ID" = listdata0_."LIST_DATA_TYPE_ID")
> The quotes are needed so that the same SQL will work on Oracle and Postgresql (where the later expects all lower case table names/ column names if not using quotes)
> Possible solution:
> in org.hibernate.sql.Template change the code on line 180 
> from 
> if (isOpenQuote) {
> to
> if (isOpenQuote && !inFromClause && (previousToken == null || !previousToken.endsWith("."))) {
> note that the previousToken is a new variable that tracks previous tokens.
> Using this if clause will not place a prefix on the table because of !inFromClause and it will not add prefix on all ldt. places - e.g. when we already specified to which table the column that we refers belongs to.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list