JPA ou HIbernate montagem de uma query ?Ajuda

2 respostas
P

Olá,

uma duvida como fazer em JPA ou Hibernate o select (sql) abaixo

pois vou ter uma tela onde vai ter parametros que estado para o usuário
escolher , por exemplo coloquei abaixo "SP" e o saldo
coloquei saldo > 1000

Tem alguma forma de fazer em JPA ou Hibernate pois minha duvida é como
colocar os joins entre as tabelas os "id" ou JPA ou Hibernate já coloca
automático ???

Se alguém puder me ajudar agradeceria…

abs

select a.id ,a.nome, b.estado, c.saldo
from cliente a,
     endereco b,
     saldo c
where  a.id=b.id
and    a.id = c.id
and    b.estado = "SP"
and    c.saldo > 1000
@Class
@Entity

public class Cliente {

   @Id
   private int id;

   private String nome;

   @OneToMany(mappedBy="cliente")
   private Collection<Saldo> saldos;

   @OneToOne
   private Endereco endereco;

}

public class Endereco {

   @Id
   private int id;


   private String estado;


}


public class Saldo{

   @Id
   private int id;

   private double saldo;

   @ManyToOne(optional=false)
   private Cliente cliente;
   
}

2 Respostas

F

Cara aqui vai um HQL…

StringBuilder hql = new StringBuilder();
		hql.append("select c.id, c.nome, e.estado, s.saldo ");
		hql.append("from Cliente c ");
		hql.append("left join c.endereco e ");
		hql.append("left join c.saldos s ");
		hql.append("where e.estado = :estado ");
		hql.append("and  s.saldo > :saldo ");

		Query query = getSession().createQuery(hql.toString());
		query.setString("estado", "SP");
		query.setInteger("saldo", saldo);

		return query.list();
P

JPA..uso de createQuery ..erro java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException:

Olá estou tentando pela primeira vez montar um createQuery

e está me dando o erro abaixo
Algumas duvidas :

- no select estou usando o nome do objeto e não a tabela do banco ?

- para ver o resultado estou usando Object é assim mesmo pois no select
tem atributos de dois objetos é asism mesmo ou tem outra forma de pegar
o resultado ?

se alguem puder me ajudar gradeceria

try{
			System.out.println("Inico ...testCreateQuery()");
			String parametro = "Exemplo";
			StringBuilder hql = new StringBuilder(); 
			
			hql.append("select a.id , a.value ,b.name,b.description");
			hql.append("from ImsDocument a ");
			hql.append("left join a.ImsDocumentField b");
			hql.append("where b.name = :name "); 

			Query query = imsDBMng.getManager().createQuery(hql.toString()); 
			query.setParameter("name", parametro);
			List lista = query.getResultList();
			 
            for (int i=0;i<lista.size();i++){
            	Object [] rs = (Object[]) lista.get(i);
            	System.out.println("valor de rs ="+rs[i]);

            }
Inico ...testCreateQuery()
- line 1:49: unexpected token: Ims_Document
- processEqualityExpression() : No expression to process!
- line 1:64: unexpected token: left
Erro testCreateQuery() =java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: Ims_Document near line 1, column 49 [select a.id , a.value ,b.name,b.descriptionfrom Ims_Document a left join a.Ims_Document_Field bwhere b.name = :name ]
">
Criado 16 de dezembro de 2008
Ultima resposta 18 de dez. de 2008
Respostas 2
Participantes 2