Duvida com o Hibernate

2 respostas
TDS

Pessoal estou como a seguinte situação…

Tenho duas classes ClienteTO e ContatoTO da seguinte maneira:

ClienteTO
    private Long idCliente; 
    private String nomeCliente;

//Metodos Getters and Setters.

ContatoTO
    private Long idContato; 
    private ClienteTO cliente;

//Metodos Getters and Setters.

Bom tudo certinho montei os relacionamentos, gerei os hbm.xml e crias as tabelas no banco.

Dai estou precisando montar um select onde me retorno todos os contatos de determinado cliente.

Dai implementei o metodo abaixo:

public Collection selectAllContatoByCliente(ContatoTO contatoTO)
throws ContatoDAOException {
//Variavéis de inicialização.
try {
s = HibernateFactory.getInstance().getSession();
c = s.createCriteria(ContatoTO.class);
c.add(Expression.eq("cliente", contatoTO.getCliente()
        .getIdCliente()));
col = c.list();
} catch (HibernateException e) {
e.printStackTrace();
}
return col;
}

E dai fiz o main para testar da seguinte maneira…

public class Teste {
    public static void main(String[] args) throws ParseException {
        MSSQLContatoDAO dao = new MSSQLContatoDAO();
        ContatoTO to = new ContatoTO();
        try {
            ClienteTO cTO = new ClienteTO();
            cTO.setIdCliente(new Long(1));
            to.setCliente(cTO);
         
            Collection col = dao.selectAllContatoByClienteOld(to);
			
            for (Iterator iter = col.iterator(); iter.hasNext();) {
	      ContatoTO conTO = (ContatoTO) iter.next();
			                System.out.println("id: " + conTO.getIdContato());
			            }
          

        } catch (ContatoDAOException e) {
            System.out.println("ERROR: " + e.getMessage());
            e.printStackTrace();
        }
   }
}

Dai do o erro de java.lang.NullPointerException, dai debugando eu percebi que minha collection esta vindo vazia, mas estou tentanto, tentando já procurei no forum aqui , mas não sei onde esta o erro, alguém poderia me ajudar??? Talvez o problema nem seja na collection, mas no debug foi o que percebi…

Desde já agradeço a atenção…

2 Respostas

passos

Quando vc faz:

c = s.createCriteria(ContatoTO.class);
c.add(Expression.eq("cliente", contatoTO.getCliente().getIdCliente()));

Vc esta pedindo pro hibernate procurar um cliente dentro de ContatoTO que seja = contatoTO.getCliente().getIdCliente()))

Tenta fazer:

c = s.createCriteria(ContatoTO.class)
.createCriteria("cliente")
.add(Expression.eq("idCliente", contatoTO.getCliente().getIdCliente()));
TDS

Muito obrigado pela ajuda, funcionou direitinho…
Valeu…

Criado 27 de julho de 2005
Ultima resposta 27 de jul. de 2005
Respostas 2
Participantes 2