Múltiplas colunas com o mesmo nome e query com SQL nativo
6 respostas
J
jayrmotta
Galera,
Estou codificando uma integração entre dois sistemas e precisei usar uma query nativa do banco de dados do cliente pois ele usa features características do banco, o fiz através do método createNativeQuery da interface EntityManager de JPA. Nessa query eu possuo diversos joins e seleciono diversos campos, dentre os campos selecionados três deles se chamam “descricao”.
Aparentemente o JPA ou quem quer que esteja processando estes registros está atribuindo o valor do primeiro campo “descricao” para os demais, fazendo meus dados selecionados ficarem errados. E se eu tento qualifica-los colocando um nome qualquer após o nome da coluna ou usando o idioma “tabela.coluna as alias” ele diz não encontrar a coluna.
faz select d.descricao, o.descricao, q.descricao from objeto d join d.outro o join o.qualquer q
qualquer coisa envia seu código
F
fabiocsilva
Estranho esse problema. Algumas sugestões:
Verifique se você realmente está retornando colunas diferentes. Eu sei, isso é básico, mas às vezes a gente digita errado ou se confunde em algum momento e acaba não percebendo o erro;
Se você executa a query diretamente no gerenciador de banco de dados o que acontece?
Tente usar um DTO como
ou um Transformer como
O Transformer é particularmente interessante porque ele cria o objeto baseado nos aliases, então se você fizer algo como q.descricao as d1 e seu DTO tiver um atributo chamado d1 ele vai saber resolver…
Se nada te indicar o problema… Bom, você é religioso? Porque só rezando
Edit 1: Tinha esquecido que o Transformer é específico do Hibernate, mas se não houver outra solução essa certamente funcionará…
W
webdiferente
Salve Salve Gujeiros
Estou com um intrigante questão aqui com meus codigos Tambem
Gostaria de uma opinião de como eu poderia resgatar do ResultSet essa consulta.
Minha Base de Dados tem uma tabela entrega que possui um dupla ocorrencia da chave estrangeira da tabela endereco (codEnderecoBuscar,CodEnderecolevar),
A grade questao depois de eu resgatar por meio do join repete-se os nomes dos campos, sera que existe uma maneira de controlar qual e o primeiro endereco e o segundo para eu poder colocalos nos objetos respectivos…
segue meu select
s[b]elect * from Entrega ent
inner join Cliente cli on ent.codCliente = cli.codCliente
[quote] [color=red]Valeu muito obrigado pelo ajuda, deu certo.Salve Salve… Bom fim de semana para todos![/color]
W
webdiferente
[quote=webdiferente]
Salve Salve! Gujeiros, Em primeiro lugar gostaria reinterar meus agradecimentos a este forum exepcional, pela sua gama de material de qualidade inquestionavel, com um suporte para desenvolvedores de qualquer seguimento java*.
Atualmente estou com, dificuldades em poder filtrar no Mysql ou Java (Ainda na dúvida) domingos em um Insert…
A questão é : ao fechar um contrato de serviço de entregas o cliente fará, por exemplo um contrato de 30 dias; terei de agendar as entregas, porem sem inserir domingos, acredito sim, que tem algo que possa faser para filtrar tal opção, se alguem puder me dar uma ajudinha ficaria grato!
Não esquecendo…Muito obrigado ai pmlm