jakeFrog estou fazendo assim:
public List<Cliente> findById2(Integer idCliente, Date dtAtualizacao ){
String sql = "select c "
+ " from Cliente c left outer join c.condicaoPgtoList as cond "
+ " where c.idCliente = :idCliente "
+ " and cond.dtAtualizacao >= :dtAtualizacao ";
List<Cliente> lista = em.createQuery(sql).setParameter("idCliente",idCliente).setParameter("dtAtualizacao", dtAtualizacao).getResultList();
return lista;
}
no main ()
public static void main(String[] args) {
ClienteDao dao = new ClienteDao();
List<Cliente> lista = dao.findById2(155, new GregorianCalendar(2012,GregorianCalendar.FEBRUARY, 7).getTime() );
for( Cliente cliente : lista){
System.out.println("-----------------get do nome fantasia -----------");
System.out.println(cliente.getNomeFantasia());
System.out.println("-----------------get do Condicao Pgto list -----------");
for( CondicaoPgto cond : cliente.getCondicaoPgtoList()){
System.out.println(cond);
}
}
}
e o resultado de saida é esse :
[EL Info]: 2012-02-13 22:51:42.604--ServerSession(4115088)--Thread(Thread[main,5,main])--file:/E:/development.with.subversion/ws.model/build/classes/_ws.PU login successful
[EL Fine]: 2012-02-13 22:51:42.68--ServerSession(4115088)--Connection(30216319)--Thread(Thread[main,5,main])--SELECT t0.ID_CLIENTE, t0.DT_VENCIMENTO_SIVISA, t0.DS_EMAIL, t0.NOME_FANTASIA, t0.VL_LIMITE, t0.RAZAO_SOCIAL, t0.ENDERECO_CEP, t0.NR_INSCRICAO_ESTADUAL, t0.ENDERECO_COMPLEMENTO, t0.NR_ALVARA_ANVISA, t0.VL_LIMITE_DISPONIVEL, t0.DT_VENCIMENTO_ANVISA, t0.ENDERECO_NRO, t0.ENDERECO_BAIRRO, t0.ENDERECO_CIDADE, t0.DT_ATUALIZACAO, t0.ENDERECO, t0.NR_ALVARA_SIVISA, t0.NR_CNPJ FROM v_clientes t0, v_clientes_condicoes_pgto t2, v_condicoes_pgto t1 WHERE (((t0.ID_CLIENTE = ?) AND (t1.DT_ATUALIZACAO = ?)) AND ((t2.ID_CLIENTE (+) = t0.ID_CLIENTE) AND (t1.ID_CONDICAO_PGTO (+) = t2.ID_CONDICAO_PGTO)))
bind => [155, 2012-02-07]
-----------------get do nome fantasia -----------
Empresa teste( 155 )
-----------------get do Condicao Pgto list -----------
[EL Fine]: 2012-02-13 22:51:42.979--ServerSession(4115088)--Connection(30216319)--Thread(Thread[main,5,main])--SELECT t1.ID_CONDICAO_PGTO, t1.STATUS, t1.VL_PEDIDO_MINIMO, t1.DS_CONDICAO_PGTO, t1.DT_ATUALIZACAO FROM v_clientes_condicoes_pgto t0, v_condicoes_pgto t1 WHERE ((t0.ID_CLIENTE = ?) AND (t1.ID_CONDICAO_PGTO = t0.ID_CONDICAO_PGTO))
bind => [155]
Condicao 1 - dt 01/01/2011
Condicao 2 - dt 02/02/2012
Condicao 3 - dt 12/02/2012
Condicao 4 - dt 13/02/2012
Se vc perceber ele fez o select que eu pedi porem qndo eu dei o getCondicaoPgtoList ele deu outro select, alguem sabe como resolver esse problema ?
pois o retorno deveria ser apenas
Condicao 3 - dt 12/02/2012
Condicao 4 - dt 13/02/2012