Não deleta relacionamento

Quando eu tento:

regra = grupo.getRegras().remove(i); tx = HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction(); factory.getRegraDAO().delete(regra); factory.getGrupoDAO().update(grupo); tx.commit();
Recebo esta excecao:

Exception occurred during event dispatching: org.hibernate.exception.GenericJDBCException: could not update collection rows: [especialista.regra.Grupo.regras#1]
Mapeamentos:

[code]

    <id
        name="id"
        column="GRUPO_ID">
        <generator class="increment"/>
    </id>
   
    <list name="regras">
        <key column="GRUPO_ID"/>
        <list-index base="0"/>
        <one-to-many class="especialista.regra.Regra"/>
    </list>
   
    <property name="nome" column="NOME_GRUPO"/>               

[/code]

[code]

    <id
        name="id"
        column="REGRA_ID">
        <generator class="increment"/>
    </id>
   
    <many-to-one
        name="grupo"
        class="especialista.regra.Grupo"
        not-null="true"
        column="GRUPO_ID"/>
   
    <many-to-one
        name="conclusao"
        class="especialista.regra.Clausula"
        cascade="all"
        not-null="true"
        lazy="false"/>
   
    <list name="antecedentes" cascade="all" lazy="false">
        <key column="REGRA_ID"/> 
        <list-index base="0"/>
        <one-to-many class="especialista.regra.Clausula"/>
    </list>
   
    <property name="nome" column="NOME_REGRA"/>
    <property name="descricao" column="DESCRICAO_REGRA"/>         
    <property name="confianca" column="CONFIANCA_REGRA"/>   
    <property name="tipo" column="TIPO_REGRA"/>
    <property name="estado" column="ESTADO_REGRA"/>         

[/code]
Alguem pode me ajudar?

Acredito que o problema esteja no relacionamento entre Regra e Antecedente. Tente mudar o seu mapeamento de

<list name="antecedentes" cascade="all" lazy="false">   
            <key column="REGRA_ID"/>   
            <list-index base="0"/>   
            <one-to-many class="especialista.regra.Clausula"/>   
</list> 

para

<list name="antecedentes" cascade="all-delete-orphan" lazy="false">   
            <key column="REGRA_ID"/>   
            <list-index base="0"/>   
            <one-to-many class="especialista.regra.Clausula"/>   
</list> 

Problema resolvido mudando os mapeamentos:

<list name="regras" cascade="delete"> <key column="GRUPO_ID"/> <list-index base="0"/> <one-to-many class="especialista.regra.Regra"/> </list>

<many-to-one name="grupo" class="especialista.regra.Grupo" cascade="save-update" not-found="ignore" column="GRUPO_ID"/>

O codigo abaixo funciona:

[code]tx = HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
List grupos = factory.getGrupoDAO().list();
Grupo grupo = (Grupo) grupos.get(0);

tx = HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
Regra regra = grupo.getRegras().remove(0);
tx.commit();[/code]