Mapeamento "all-delete-orphan"

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?

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?