[hibernate-issues] [Hibernate-JIRA] Created: (HHH-3314) "in elements" generated subquery table name not corrected translated on "insert into ... select" queries
Bruno Mayerle Leite (JIRA)
noreply at atlassian.com
Thu May 29 17:11:34 EDT 2008
"in elements" generated subquery table name not corrected translated on "insert into ... select" queries
--------------------------------------------------------------------------------------------------------
Key: HHH-3314
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3314
Project: Hibernate3
Issue Type: Bug
Components: query-hql
Affects Versions: 3.2.6, 3.2.5
Environment: Windows XP SP2
latest Java 1.4
XML mapping
Derby 10.4.1.3
Reporter: Bruno Mayerle Leite
Priority: Blocker
Attachments: bug_hibernate.zip
The following hql:
--------------------------------------------------------------------------------------------------------------------
sb.append( " insert into ValorIndicador ( indicador," );
sb.append( " tipoValor ) " );
sb.append( " select vi.indicador, " );
sb.append( " vi.tipoValor ");
sb.append( " from ValorIndicador vi, PerfilIndicador pi " );
sb.append( " where 1 = 1 " );
sb.append( " and vi.indicador = pi.indicador " );
sb.append( " and vi.tipoValor in elements( pi.cenarios ) " );
-------------------------------------------------------------------------------------------------------------------
after translation generates the following WRONG sql:
-------------------------------------------------------------------------------------------------------------------
insert
into
VALORINDICADOR
( indicador, tipovalor ) select
valorindic0_.indicador as col_0_0_,
valorindic0_.tipovalor as col_1_0_
from
VALORINDICADOR valorindic0_,
PERFILINDICADOR perfilindi1_
where
1=1
and valorindic0_.indicador=perfilindi1_.indicador
and (
valorindic0_.tipovalor in (
select
cenarios2_.cenario
from
cenarios cenarios2_
where
PERFILINDICADOR.id=cenarios2_.perfilindicador_id
)
)
-------------------------------------------------------------------------------------------------------------------
while without the "insert into" statement :
-------------------------------------------------------------------------------------------------------------------
sb.append( " select vi.indicador, " );
sb.append( " vi.tipoValor ");
sb.append( " from ValorIndicador vi, PerfilIndicador pi " );
sb.append( " where 1 = 1 " );
sb.append( " and vi.indicador = pi.indicador " );
sb.append( " and vi.tipoValor in elements( pi.cenarios ) " );
-------------------------------------------------------------------------------------------------------------------
it translates to the CORRECT sql:
-------------------------------------------------------------------------------------------------------------------
select
valorindic0_.indicador as col_0_0_,
valorindic0_.tipovalor as col_1_0_
from
VALORINDICADOR valorindic0_,
PERFILINDICADOR perfilindi1_
where
1=1
and valorindic0_.indicador=perfilindi1_.indicador
and (
valorindic0_.tipovalor in (
select
cenarios2_.cenario
from
cenarios cenarios2_
where
perfilindi1_.id=cenarios2_.perfilindicador_id
)
)
-------------------------------------------------------------------------------------------------------------------
Note that in the first generated sql, the table instance name of the "in elements" subquery is wrong. The entity name (PERFILINDICADOR) is used instead of the instance name (perfilindi1_).
In the second generated sql this problem doesn't occurs.
--
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