Pessoal,
Por favor, vejam se conseguem me ajudar…
tenho uma entity com uma namedquery
@Entity(name="tbl_clientes")
@NamedQueries( {
@NamedQuery( name = "Cliente.listAll", query = "select c from tbl_clientes c where inativo = 0 order by nome_cliente")})
e tento retornar todos os clientes já com as variaveis mapeadas corretamente do banco pela seguinte pesquisa:
[code]TypedQuery query = Factory.EManager).createNamedQuery(“Cliente.listAll”, Cliente.class);
List<Cliente> listaClientes = query.getResultList();
System.out.print(listaClientes);
System.out.print(listaClientes.get(1).getNomeCliente());
return listaClientes;
[/code]
A lista retorna o numero total de resultados corretos, só que os resultados só tem uma variavel preenchida, o restante está NULL, e todos os resultados com o mesmo valor.
exemplo:
ResultList total 200
Valor 1
x = null
y - 70
valor 2
x = null
y - 70
Fala weder.vierra, blz?
Pelo o que parece você misturou sql com JPQL…
Tente fazer assim:
@Entity(name="tbl_clientes")
@NamedQueries( {
@NamedQuery( name = "Cliente.listAll", query = "select c from Cliente c where c.inativo = 0 order by c.nome")})
Lembrando que o c. deve ser o nome do atributo e não o campo na tabela do banco, ok?
Vlw
Julian
Obrigado pela resposta.
A observação que você fez foi importante.
Porém haviam mais coisas a serem considerados, no final o resultado veio como o esperado e correto.
Porém, ainda tenho uma dúvida, veja se você pode me explicar.
A dúvida:
Tenho mapeado no arquivo persistence.xml, 2 banco de dados no mesmo servidor.
Exemplo:
<persistence-unit name="db1" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>classe1</class>
............
<persistence-unit name="db2" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>Cliente</class>
Veja,
No DB1 é meu novo banco onde as tabelas devem ser criadas a partir das entitys.
No DB2 onde está a tabela cliente, ele já existia e tentei programar para não haver alteração.
O que está ocorrendo é, no DB2 não há alterações e as consultas retornam corretamente (Agora).
E no DB1 está sendo criado a tabela cliente (o que não deveria ocorrer.)
Na entity cliente coloquei está observação:
@PersistenceUnits({@PersistenceUnit(unitName="db2")})
@Entity(name="tbl_clientes")
@NamedQueries( {
@NamedQuery( name = "Cliente.listAll", query = "select c from tbl_clientes c where c.inativo = 0 order by c.nomeCliente")})
Tentei indicar o unitName para o DB2, mas mesmo assim ele ainda cria a tabela no DB1
Consegui explicar direito.
Obrigado novamente.
Outra observação:
Em todas as entitys tentei indicar para qual persistente ela pertence utilizando a annotation abaixo
Para DB1
Para DB
Mas ainda assim ele cria a tabela Cliente no DB1
Resolvi esse problema fazendo o seguinte.
Além de mapear cada entity para o seu unitName correto.
Dentro do persistence.xml coloquei um parametro de:
Com isso, só as classes listadas dentro do resource serão mapeadas para o banco configruado no seu properties.