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.