Mapeamento "all-delete-orphan"

1 resposta
G

Boa tarde, sou novo com hibernate e estou tendo algumas dificuldades.

Tenho o seguinte mapeamento:

@Entity(name="entidade")
    public class Entidade implements Serializable {

        @OneToMany(mappedBy="titular")
        private List<Dependente> dependentes;
    }
@Entity
    public class Dependente implements Serializable {    
        @ManyToOne(cascade=CascadeType.ALL)
        @org.hibernate.annotations.Cascade(value=org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
        @JoinColumn(name="depe_enti_id", nullable=false, insertable=true, updatable=true)
        private Entidade titular;
    }

gostaria que ao salvar a entidade fossem excluídos do BD os dependentes removidos da lista.

já tentei de todos os jeitos, pesquisei no guj e encontrei algo falando de “all-delete-orphan” mas não estou sabendo usar.

alguem poderia me ajudar?

1 Resposta

G

alterei meu mapeamento para

@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
    @JoinTable(
            name="entidade_dependente",
            joinColumns = @JoinColumn(name = "enti_id"),
            inverseJoinColumns = @JoinColumn(name ="depe_id") )
    private List<Dependente> dependentes;

funcionou, mas agora surgiu outro problema…

quando peço uma lista de entidades

Criteria crit = session.createCriteria(Entidade.class);
        crit.add(Restrictions.eq("enti_id", "1"))
        crit.setMaxResults(150);
        List<Entidade> entidades = crit.list();

estou tendo retorno duplicado, na verdade o retorno traz uma entidade para cada dependente.
alguma idéia de como resolver?

Criado 7 de julho de 2010
Ultima resposta 7 de jul. de 2010
Respostas 1
Participantes 1