JTDS, SQLServer, Hibernate

Estou com o seguinte problema:

tenho uma aplicação que trabalha com vários SGBDs e sua camada de persistência é toda feita pelo Hibernate. Assim, existem vários drivers acoplados a ela. Para o Microsoft SQL Server Express 2005 estou usando o JTDS, e para o MySQL estou usando o connector (driver fornecido pelo MySQL).

No entanto, quando faço uma busca no MySQL usando o método HQL, ele não encontra os objetos e diz que há erro na sintaxe (“from CA1 where CA1_USUID=‘X’”, método createQuery). Porém quando eu faço usando SQL ANSI (“Select * from CA1 where CA1_USUID=‘X’”, método createSQLQuery) ele funciona ¬¬

Já com o MS SQL Server Express 2005, ocorre o contrário. Quando uso HQL, ele retorna o resultado normalmente. Mas com SQL ANSI, nada.

Detalhe, os dois bancos tem a mesma estrutura e eu faço um esquema de gravação do hibernate.properties baseado em outros properties. Mas como, dependendo do modo de query utlizado, ele funciona pra ambos o problema não deve estar na configuração básica do hibernate.properties (digo básica pq podem haver outras configurações que eu desconheça).

Será problema com os drivers?

Encontrei um post na internet que diz para ignorar o erro…só que como o resultado não é retornado em ambos os casos, não daria certo. Além de ser POG…

Grato,

Opa, problema “contornado”

O que ocorria era o seguinte: o MySQL trabalha com 3 dialetos SQL diferentes (MySQLDialect, MySQLInnoDBDialect, MySQLMyISAMDialect). O meu MySQL está configurado para trabalhar com a engine InnoDB. O correto é colocar as 3 linhas de dialects no hibernate.properties, ele se vira pra configurar a correta. Porém como eu estava fazendo uma cópia de properties, ele copiava só a linha com o MyISAM, por isso não rodava as querys em HQL. Configurando corretamente, foi.

Detalhe: como eu não consegui fazer com que o JTDS usasse SQL ANSI (createSQLQuery), uso o HQL mesmo. Na realidade, agora ambos usam o HQL. Por isso o problema ficou “remediado”, não solucionado.

Quem tiver idéia do pq o JTDS não consegue trabalhar com a query, pode continuar postando aki.

Abraços