Problemas ao deletar usando o hibernate

2 respostas
renato_ramos

Oi

eu tenho essa entidade

public class Objeto implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id_objeto")
    private Integer idObjeto;
    @Basic(optional = false)
    @Column(name = "desc_objeto")
    private String descObjeto;
    @Column(name = "longit_objeto")
    private String longitObjeto;
    @Column(name = "latit_objeto")
    private String latitObjeto;
    @Column(name = "rfid_objeto")
    private String rfidObjeto;
    @JoinColumn(name = "id_logradouro", referencedColumnName = "id_logradouro")
    @ManyToOne(cascade=CascadeType.PERSIST)
    private Logradouro idLogradouro;

com e tenho esse metodo no dao para deletar

public class ObjetoDao
{

    @PersistenceContext
    private EntityManager em;
    
    public void excluir(Objeto objeto) throws  DataAccessException
    {
        em.remove(objeto);
    }

porem não funciona

da essa execao

e eu não sei porque e nen achei nada parecido na net e no forum =/

valeu pela atenção!

[]'s

2 Respostas

Flavio_Almeida

Renato, você está tentando deletar uma entidade que não está sendo mais gerenciada pelo EntityManager do Hibernate. Você deve estar se perguntando: como não?

Faça o seguinte teste!

public void excluir(Objeto objeto) throws  DataAccessException

{

objeto = em.getReference(Objeto.class, objeto.getId())

em.remove(objeto);

}

Sendo uma entidade, sua classe Objeto provavelmente tem um método getId() ou algo parecido.
Quando você dá um gerReference() nele, ele volta a ser gerenciado pelo Hibernate.

Qualquer dúvida estamos aí!

Flávio Almeida

Como seu objeto deixou de ser gerenciado? Provavelmente, você localizou esse objeto pelo EntityManager e logo depois deu um EntityManager.close() ou EntityManager.clear(). Ambos removem o status gerenciado das entidades.

renato_ramos

fiz isso nao… estou usando hibernate + spring

public void excluir(Objeto objeto) throws DataAccessException { objeto = em.getReference(Objeto.class, objeto.getId()) em.remove(objeto); }

fiz isso e nao funcionou.

valeeu!

Criado 11 de novembro de 2009
Ultima resposta 11 de nov. de 2009
Respostas 2
Participantes 2