Erro ao excluir list usando LAZY

4 respostas
S

Boa tarde Pessoal!

public class Pessoa implements Serializable {

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPessoa", fetch=FetchType.LAZY)
    private List<PessoaFone> pessoaFoneList;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPessoa", fetch=FetchType.LAZY)
    private List<PessoaEndereco> pessoaEnderecoList;
}
public class PessoaFone implements Serializable {

    @JoinColumn(name = "ID_PESSOA", referencedColumnName = "ID_PESSOA", nullable = false)
    @ManyToOne(optional = false)
    private Pessoa idPessoa;
}

Para ilistrar, no CRUD Pessoa, eu també ja faço as operações dos Fones, setando a lista de telefones no beans Pessoa antes do save.
As operações de inclusão e alteração dos Fones em Pessoa estão funcionando, porém a exclusão de um fone (ex.: A Pessoa 1 tem 3 telefones, e tento excluir um telefone, setando a nova lista com 2 telefones para o bean Pessoa e “salvando” a Pessoa) não funciona, nem sequer dá erro.
Toda manutenção de telefones é feita em um list local, e só depois setado em Pessoa

No meu controller fica:

private List<PessoaFone> foneList = new ArrayList<PessoaFone>();
private Pessoa pessoa;

    public void updatePessoa() {
            pessoa.setPessoaFoneList(foneList);
            pessoaService.save(pessoa);
            recreateModel();
    }

Lembrando: Em caso de alteração ou inclusão de um novo telefone, funciona normalmente.

4 Respostas

gilmaslima

Não aparece nada no log do servidor?

Dica: habilite o show sql para vc ver oq está indo pro banco.

Qualquer coisa posta ai.

flW!

S

Boa tarde!

Infelizmente não aparece nada, inclusive, é o mesmo log que, quando add ou upd um novo telefone, que dá certo.

L

Faça um teste ai:

import java.util.Set;

public class Pessoa implements Serializable {  
  
	@Id
	@GeneratedValue
	@Column(unique = true)
	private Integer id;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPessoa", fetch=FetchType.EAGER)  
    private Set<PessoaFone> pessoaFoneList;  
  
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idPessoa", fetch=FetchType.EAGER)  
    private Set<PessoaEndereco> pessoaEnderecoList;  
}
altitdb

Cara,

se entendi bem, deixe como LAZY, e utilize o orphanRemoval=true.

Depois salve o objeto pessoa.

xD~~

Criado 16 de junho de 2011
Ultima resposta 19 de jun. de 2011
Respostas 4
Participantes 4