galera,
to com um problema muito estranho.
fiz um bean BMP. produto aonde os campos saum id, descricao, quantidade, preco
daih fiz o cliente e ele da o insert bem direitim no Create() e o delete no remove().
daih no cliente eu colokei esse codigo:
br.cefetrn.bmp.Produto myBean = getHome().create("2", "feijao", 500, 1.0);
System.out.println("Produto: " + myBean.getDescricao());
System.out.println("preço: " + myBean.getPreco());
//ProdutoHome home = getHome();
System.out.println("\n\nalterando preço...\n\n");
myBean.alterarPreco(100.0);
System.out.println("Novo preço: " + myBean.getPreco());
//ProdutoHome home = getHome();
Produto p = getHome().findByPrimaryKey(new ProdutoPK("1"));
//System.out.println(p.getDescricao() + "\n");
Iterator iter = getHome().findByDescricao("cafe").iterator();
while ( iter.hasNext() ){
Produto produto = (Produto) javax.rmi.PortableRemoteObject.narrow(iter.next(),Produto.class);
//Produto produto = (Produto) iter.next();
System.out.println("ID: " + produto.getProdutoID());
System.out.println("Descricao: " + produto.getDescricao());
}
daih vejao que no findByDescricao eu passo como parametro “cafe” que TEM no banco.
soh q ele retorna sempre o “feijao” q eu criei aih em cima e eh oq ta na memoria.
se eu chamar o findByDescricao sem ter dado o Create() em cima ele da um erro dizendo nullpoiterexception!
o interessante eh q eu mandei la na implementação do ejbFindByDescricao ele imprimir as chaves que ta vindo do banco no select e ele imprime as chaves corretas (a chave do produto cafe).
mas quando venho pro cliente ele nao instancia o objeto!
outra coisa tbm…
vamos supor que existaum 3 produtos “cafe”
entao ele imprime 3 vezes o produto “feijao”
assim:
Id: 2
Descricao: feijao
Id: 2
Descricao: feijao
Id: 2
Descricao: feijao
e eu dei um system.out. no ejbLoad e vi q ele soh eh chamado UMA vez. e é exatamente no create()!
mas quando eu dou um findBy ele num tem que chamar o ejbLoad pra instanciar os objetos persistentes nao?
espero ter sido claro…
qualquer ajuda e bem vinda!