Problema ao salvar objeto: detached entity passed to persist [Resolvido!]

Olá pessoal, bom dia.

estou com um problema na minha aplicação web. Eu consigo realizar apenas uma avaliação de demanda com sucesso (ou seja, consigo salvar o objeto desta classe apenas uma vez depois que eu executo o deploy da aplicação)… a partir daí, me dá o seguinte erro

[code]public void avaliarDemanda(ActionEvent event) {
RequestContext context = RequestContext.getCurrentInstance();
boolean avaliacaoCorreta = false;
System.out.println(“avaliacaoCorreta: " + avaliacaoCorreta);
if (this.resultadoSelecionado.equals(”") || this.resultadoSelecionado == null || this.avaliacao.getObs().equals("") || this.avaliacao.getObs() == null) {
avaliacaoCorreta = false;
System.out.println(“Por favor, preencha os campos corretamente!”);
FacesUtils.messageError(“Por favor, preencha os campos corretamente!”);
} else {
AuxResultado ar = this.resultadoDao.buscarPorDescricao(this.resultadoSelecionado);
Demanda d = this.demandaDao.buscarPorId(this.selectedCell.getDemanda().getId());
this.avaliacao.setDataAvaliacao(DateUtils.returnToday());
System.out.println("data: " + DateUtils.returnToday());
this.avaliacao.setDemanda(d);
System.out.println("demanda: " + d);
this.avaliacao.setResultado(ar);
System.out.println("resultado: " + ar);
this.avaliacao.setFuncionario(usuarioEmSessao().getFuncionario());
System.out.println("usuario: " + usuarioEmSessao().getFuncionario());
AuxStatus s = this.statusDao.buscarStatusPorDescricao(DemandaStatus.CONCLUIDA.getNome());
d.setStatus(s);
this.avaliacaoDao.salvar(this.avaliacao);
this.demandaDao.atualizar(d);
avaliacaoCorreta = true;
init();
System.out.println(“Avaliação Concluída com Sucesso!”);
FacesUtils.messageInfo(“Avaliação Concluída com Sucesso!”);
}
context.addCallbackParam(“avaliacaoCorreta”, avaliacaoCorreta);

}[/code]

O que eu percebi é que após ele salvar com sucesso a primeira avaliação, a partir daí ele não limpa mais os campos do form… Creio que ele não esteja limpando os dados da session…

Estou usando JSF2.0 + spring + primefaces.

Se alguem puder ajudar, agradeço.

Avaliação possui relacionamentos com outras entidades?
Se sim, grandes chances de você estar tentando salvar um relacionamento sem que uma das entidades relacionadas entre si esteja salva no banco de dados.

cara,

esse erro ocorre pq seu objeto avaliação não é um objeto persistente, depois que vc salva esse objeto, vc faz o que? Como vc obtem ele novamente?

t+

Sim, possui relacionamentos com outras entidades…

[code]public class Avaliacao implements Serializable {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "obs", length = 2147483647)
private String obs;
@Column(name = "data")
@Temporal(TemporalType.DATE)
private Calendar dataAvaliacao;

//RELACIONAMENTOS…
@JoinColumn(name = “demanda”, referencedColumnName = “id”)
@ManyToOne
private Demanda demanda;
@JoinColumn(name = “resultado”, referencedColumnName = “id”)
@ManyToOne
private AuxResultado resultado;
@JoinColumn(name = “funcionario”, referencedColumnName = “pessoa”)
@ManyToOne
private Funcionario funcionario;[/code]

O que me intriga é que após o deploy, consigo salvar uma avaliação com sucesso. A partir daí que aparece o erro…
Obrigado por responder.

[quote]alissonvla[/quote] Bom, a avaliação se refere a uma demanda. Quando ela é respondida (e só é respondida 1 vez), o solicitante faz a avaliação daquela demanda… a partir daí, ela só é exibida em lista mesmo.

entao cara,

o problema ta depois que vc salva esse objeto, pois ele ta deixando de ser persistente, por isso que ocorre o erro, posta o codigo que vc faz a inserção.

t+

É o primeiro código que postei…

o que esse metodo init faz?

t+

Cara, era isso mesmo… o init() inicializa os objetos o bean… faltava dar um new no Avaliacao.

Resolveu aqui. Vlw.