[EJB 3.0] Não pode persistir detached objetc

2 respostas
danieldestro

Estou fazendo um protótipo e estou com um erro, que não entendo o motivo.

Tenho meu entity com um chave simples:

package xyz;
import java.io.Serializable;
import javax.persistence.*;

@Entity
@Table(name = "AVP")
public class AcessorioVP implements Serializable {
    @Id
    @Column(name="COL1")
    private Long col1;
    @Column(name="COL2")
    private String col2;

   // gets e sets
}

E o método que faz a persistência:

public void create(Object entity) {
        em.persist(entity);
        em.flush();
    }

Quando passo um objeto do entity com todo os atributos com valor, ele lança a seguinte exceção:

2007-08-30 12:00:38.402 ERROR J2EE EJB-08006 [BaseTransacional:public void xyz.BaseTransacionalBean.create(java. lang.Object)] exceção ao chamar método: javax.transaction.TransactionRolledbackException: Exception Description: Cannot persist detached object [xyz.AcessorioVP@9003aa]. Class> xyz.AcessorioVP Primary Key> [2]; nested exception is: javax.persistence.EntityExistsException: Exception Description: Cannot persist detached object [xyz.AcessorioVP@9003aa]. Class> xyz.AcessorioVP Primary Key> [2] ....

Eu não defini nada demais no @Id do meu entity, suponho que passando o valor, ele se vira pra persistir. Ou estou esquecendo de algo?

Tks

2 Respostas

Leozin

possivelmente você esteja querendo persisitir um objeto cujo qual já tenha uma PK nele

antes de inserir, faça com que a PK seja null e veja qual vai ser o resultado

danieldestro

Putzzz… fui amador total agora.

Esqueci de definir as tags do Struts no JSP e a listagem dos registros na tela vinha vazio e na verdade já existe o ID que tento inserir. É realmente este mesmo o problema, ID já existente no BD.

Criado 30 de agosto de 2007
Ultima resposta 30 de ago. de 2007
Respostas 2
Participantes 2