É possível criar um relacionamento apenas nas classes sem alterar o banco?

Boa tarde amigos.

A alguns dias estou passando por uma situação um pouco trabalhosa e até mesmo chata.

Recebi uma base de dados em postgres de um órgão do Governo Federal, e, em poucas palavras: o banco é uma bagunça. Tabelas sem PK nem FK são alguns dos problemas que eu posso citar aqui.

Estou fazendo uma interface bem simples para realizar algumas consultas e gerar alguns relatórios, mas como não estou conseguindo fazer a maioria das consultas com Hibernate Criteria, estou usando a POG (programação orientada a Gambiarra), ou seja: muitas consultas através do createSQLQuery.

O que eu gostaria de saber, é se é possível criar o relacionamento apenas nas entidades do projeto sem alterar o banco, pois tenho tentado fazer da forma convencional (usando anotações) e me retorna erros de annotations.

A quem puder contribuir, agradeço.

O hibernate deve acompanhar o banco e não o banco ao hibernate.

sim, é possível.

Sei não, mas acho que a melhor idéia seria utilizar JDBC mesmo, não seria viável?

acho que poderia ser melhor jdbc também

eu já tive que pegar um db zuretado uma vez. mas para minha sorte eu não precisava exibir todos os dados. o que eu fiz foi mapear apenas as colunas que eu precisava. [=

O pior de tudo, é que tem consulta que não roda nem com reza, mesmo utilizando createSQLQuery… no banco vai legal, mas no dao… veeeeeeeiiiii… kkkk (aperfeiçoando a paciência e as gambiarra)!!!

Uma saída poderia ser a criação de Views com as informações que você necessita no seu sistema. Aí se o uso de Hibernate for obrigatório, você mapearia as Views em entidades, tendo o cuidado ao definir uma coluna como @Id (ela tem que ser única na View).

Excelente sugestão, Marcus.

Vou tentar isso sim.

Agradecido.

Vou tentar essa sugestão, mas até agora, mesmo fazendo a consulta via HQL ou SQL, me retorna esse erro:

E esse campo é String e não número, e em momento algum eu faço essa conversão. Até pq eu quero preencher uma lista com 2 campos: um String (nomeMunicipio) e um campo int (count).
Tenso…

Vê se o mapeamento está feito certo, ele está tentando pegar o conteúdo de algum campo numérico (ou configurado como numérico).

Amigo, o problema é que não existe mapeamento nesse banco imundo… as tabelas não tem PK nem FK…
Tenso…