persistence@glassfish.java.net

Remove some children of entity

From: Laurent Yhuel <laurent.yhuel_at_apologic.fr>
Date: Mon, 13 Oct 2008 13:55:27 +0200

Hello,

 

I try to delete some children (not all) of an entity.

Cascade work in add, update, and if I remove parent.

But if in parent, I've 3 children and I want to remove one of them, I don't
known how can I do.

I've tried to remove one child of Set and merge parent: Record is not
deleted.

I've tried to set null the property TRequete of one child: I've got
exception : null is not allow.

 

Thanks for your help.

Laurent

 

Object parent:

@Entity

@Table(name="t_requete"

)

public class TRequete implements java.io.Serializable {

 

     private Integer id;

     private String reqNom;

     private Set<TRequeteParam> listParam = new HashSet<TRequeteParam>(0);

 

    public TRequete() {

    }

     @SequenceGenerator(name="seq_TRequete",
sequenceName="t_requete_id_requete_seq")@Id
@GeneratedValue(strategy=SEQUENCE, generator="seq_TRequete")

 

    

    @Column(name="id_requete", unique=true, nullable=false)

    public Integer getId() {

        return this.id;

    }

    

    public void setId(Integer id) {

        this.id = id;

    }

    

    @Column(name="req_nom")

    public String getReqNom() {

        return this.reqNom;

    }

    

    public void setReqNom(String reqNom) {

        this.reqNom = reqNom;

    }

 

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY,
mappedBy="requete")

    public Set<TRequeteParam> getListParam() {

        return this.listParam;

    }

    

    public void setListParam(Set<TRequeteParam> listParam) {

        this.listParam = listParam;

    }

}

 

Child object:

@Entity

@Table(name="t_requete_param"

)

public class TRequeteParam implements java.io.Serializable {

 

     private Integer id;

     private TRequete requete;

     private String reqparNom;

 

    public TRequeteParam() {

    }

   

     @SequenceGenerator(name="seq_TRequeteParam",
sequenceName="t_requete_param_id_requete_param_seq")@Id
@GeneratedValue(strategy=SEQUENCE, generator="seq_TRequeteParam")

 

    

    @Column(name="id_requete_param", unique=true, nullable=false)

    public Integer getId() {

        return this.id;

    }

    

    public void setId(Integer id) {

        this.id = id;

    }

@ManyToOne(fetch=FetchType.LAZY)

    @JoinColumn(name="fk_requete", nullable=false)

    public TRequete getRequete() {

        return this.requete;

    }

    

    public void setRequete(TRequete requete) {

        this.requete = requete;

    }

 

    

    @Column(name="reqpar_nom")

    public String getReqparNom() {

        return this.reqparNom;

    }

    

    public void setReqparNom(String reqparNom) {

        this.reqparNom = reqparNom;

    }

}