(EJB 2.1) EJB-QL e referência entre tabelas

Boa tarde,

Estou aqui com uma aplicação em EJB 2.1, sendo migrada para um novo ambiente, com Java 1.6 e JBoss AS7. Estou tendo problema para validar algumas queries com referências entre tabelas. Por exemplo, tenho um primeiro cenário, que está funcionando perfeitamente, com a seguinte query:

<ejb-ql>SELECT OBJECT(id) FROM Imovel as io, Imovel as id, ImovelDesdobramento as ides WHERE ides.idImovelOrigem = io.idImovel AND id.idImovel = ides.idImovelDestino AND io.numeroControle like ?1 </ejb-ql>

E, no arquivo jbosscmp-jdbc, as entidades estão declaradas da seguinte forma:

<entity> <ejb-name>Imovel</ejb-name> <datasource>java:jboss/datasources/OracleDS</datasource> <datasource-mapping>Oracle9i</datasource-mapping> <table-name>IMOVEL</table-name> <cmp-field> <field-name>idImovel</field-name> <column-name>ID_IMOVEL</column-name> </cmp-field> <cmp-field> <field-name>numeroControle</field-name> <column-name>NUMERO_CONTROLE</column-name> </cmp-field> //... demais <cmp-field> <cmp-field> <field-name>idImovelOrigem</field-name> <column-name>ID_IMOVEL_ORIGEM</column-name> </cmp-field> <unknown-pk> <unknown-pk-class>java.lang.Long</unknown-pk-class> <column-name>ID_IMOVEL</column-name> </unknown-pk> </entity> <entity> <ejb-name>ImovelDesdobramento</ejb-name> <datasource>java:jboss/datasources/OracleDS</datasource> <datasource-mapping>Oracle9i</datasource-mapping> <table-name>IMOVEL_DESDOBRAMENTO</table-name> <cmp-field> <field-name>idImovelDesdobramento</field-name> <column-name>ID_IMOVEL_DESDOBRAMENTO</column-name> </cmp-field> <cmp-field> <field-name>idImovelOrigem</field-name> <column-name>ID_IMOVEL_ORIGEM</column-name> </cmp-field> <cmp-field> <field-name>idImovelDestino</field-name> <column-name>ID_IMOVEL_DESTINO</column-name> </cmp-field> //... demais <cmp-field> <unknown-pk> <unknown-pk-class>java.lang.Long</unknown-pk-class> <column-name>ID_IMOVEL_DESDOBRAMENTO</column-name> </unknown-pk> </entity>

Beleza, este exemplo funciona certinho. Consigo fazer deploy do meu EAR e iniciar o JBoss sem problemas. E, testando a aplicação, a tela que resulta na chamada à query acima retorna os resultados esperados.

Não há nenhuma declaração no arquivo jbosscmp-jdbc.xml deste módulo.

Porém, num outro módulo, tenho a query abaixo:

<ejb-ql>SELECT OBJECT(it) FROM ImagemTributacao it , ImovelEconomia ie, ImovelExercicio ix WHERE ix.idImovel = ?1 and ix.exercicio = ?2 and ix.idImovelRecalculado = ie.idImovelDados and it.idImovelEconomia = ie.idImovelEconomia </ejb-ql>

Com as entidades declaradas basicamente da mesma forma como do módulo anterior.

<entity> <ejb-name>ImagemTributacao</ejb-name> <datasource>java:jboss/datasources/OracleDS</datasource> <datasource-mapping>Oracle9i</datasource-mapping> <table-name>IMAGEM_TRIBUTACAO</table-name> <cmp-field> <field-name>idImagemTributacao</field-name> <column-name>ID_IMAGEM_TRIBUTACAO</column-name> </cmp-field> <cmp-field> <field-name>idImovelEconomia</field-name> <column-name>ID_IMOVEL_ECONOMIA</column-name> </cmp-field> //... demais<cmp-field> <unknown-pk> <unknown-pk-class>java.lang.Long</unknown-pk-class> <column-name>ID_IMAGEM_TRIBUTACAO</column-name> </unknown-pk> </entity> <entity> <ejb-name>ImovelEconomia</ejb-name> <datasource>java:jboss/datasources/OracleDS</datasource> <datasource-mapping>Oracle9i</datasource-mapping> <table-name>IMOVEL_ECONOMIA</table-name> <cmp-field> <field-name>idImovelEconomia</field-name> <column-name>ID_IMOVEL_ECONOMIA</column-name> </cmp-field> //... demais <cmp-field> <cmp-field> <field-name>idImovelDados</field-name> <column-name>ID_IMOVEL_DADOS</column-name> </cmp-field> <unknown-pk> <unknown-pk-class>java.lang.Long</unknown-pk-class> <column-name>ID_IMOVEL_ECONOMIA</column-name> </unknown-pk> </entity> <entity> <ejb-name>ImovelExercicio</ejb-name> <datasource>java:jboss/datasources/OracleDS</datasource> <datasource-mapping>Oracle9i</datasource-mapping> <table-name>IMOVEL_EXERCICIO</table-name> <cmp-field> <field-name>idImovelExercicio</field-name> <column-name>ID_IMOVEL_EXERCICIO</column-name> </cmp-field> //... demais <cmp-field> <cmp-field> <field-name>exercicio</field-name> <column-name>EXERCICIO</column-name> </cmp-field> <cmp-field> <field-name>idImovel</field-name> <column-name>ID_IMOVEL</column-name> </cmp-field> <cmp-field> <field-name>idImovelRecalculado</field-name> <column-name>ID_IMOVEL_RECALCULADO</column-name> </cmp-field> <unknown-pk> <unknown-pk-class>java.lang.Long</unknown-pk-class> <column-name>ID_IMOVEL_EXERCICIO</column-name> </unknown-pk> </entity>

E, não funciona! Após fazer o deploy do EAR, ao tentar iniciar o JBoss AS7 eu recebo o erro abaixo.

Caused by: org.jboss.as.cmp.ejbql.ParseException: Encountered " <IDENTIFIER> "ImovelEconomia "" at line 1, column 45. Was expecting one of: "IN" ... "ORDER" ... <ABSTRACT_SCHEMA> ...

Alguém tem idéia da causa do erro? Ou, aonde mais pode estar o problema?

Muito obrigada.