maurotj84
11-10-2010, 18:19
Salve a tutti! posto qui per disperazione sperando che qualcuno riesca a darmi una mano! Sto trovando difficoltà nell'interpretare le relazioni tra entità (@OneToMany, @ManyToOne). Ho due entità, Utente e Feedback e vorrei che nel momento in cui un utente decide di eliminare il suo account i feedback da lui scritti possano rimanere nella base dati e pubblicati ancora.
Ho l'utente in relazione oneToMany con i Feedback (in Utente.java):
@OneToMany(mappedBy="autoreJoin", fetch=FetchType.EAGER, orphanRemoval=false, cascade={CascadeType.MERGE,CascadeType.REFRESH})
private List<Feedback> feedbackRilasciati;
public void setFeedbackRilasciati(List<Feedback> feed){
feedbackRilasciati=feed;
}
public List<Feedback> getFeedbackRilasciati(){
return feedbackRilasciati;
}
@OneToMany(mappedBy="riceventeJoin",fetch=FetchType.EAGER,orphanRemoval=false, cascade= {CascadeType.MERGE, CascadeType.REFRESH})
private List<Feedback> feedbackRicevuti;
public void setFeedbackRicevuti(List<Feedback> feed){
feedbackRicevuti=feed;
}
public List<Feedback> getFeedbackRicevuti(){
return feedbackRicevuti;
}
e relativi Feedback in ManyToOne con l'Utente (in Feedback.java):
@ManyToOne(cascade=CascadeType.REFRESH)
@JoinColumn(name="AUTORE", referencedColumnName="ID", insertable=true, updatable=true, nullable=true)
private Utente autoreJoin;
public void setAutoreFeed(Utente ut){
autoreJoin=ut;
}
public Utente getAutoreFeed(){
return autoreJoin;
}
@ManyToOne()
@JoinColumn(name="RICEVENTE", referencedColumnName="ID", insertable=true, updatable=true, nullable=true)
private Utente riceventeJoin;
public void setRiceventeFeed(Utente ut){
riceventeJoin=ut;
}
public Utente getRiceventeFeed(){
return riceventeJoin;
}
Dichiarate così (in Feedback.java):
…
...
@Basic(optional = false)
@Column(name = "AUTORE", nullable = true,insertable=false,updatable=false)
private int autore;
@Basic(optional = false)
@Column(name = "RICEVENTE", nullable = true,insertable=false,updatable=false)
private int ricevente;
…
…
nel momento in cui tento l'eliminazione dell'utente diventa impossibile perchè non posso lasciare il feedback senza riferimento! Ho provato varie opzioni in cascade e con orphanremoval ma nulla.. help!:)
Ho l'utente in relazione oneToMany con i Feedback (in Utente.java):
@OneToMany(mappedBy="autoreJoin", fetch=FetchType.EAGER, orphanRemoval=false, cascade={CascadeType.MERGE,CascadeType.REFRESH})
private List<Feedback> feedbackRilasciati;
public void setFeedbackRilasciati(List<Feedback> feed){
feedbackRilasciati=feed;
}
public List<Feedback> getFeedbackRilasciati(){
return feedbackRilasciati;
}
@OneToMany(mappedBy="riceventeJoin",fetch=FetchType.EAGER,orphanRemoval=false, cascade= {CascadeType.MERGE, CascadeType.REFRESH})
private List<Feedback> feedbackRicevuti;
public void setFeedbackRicevuti(List<Feedback> feed){
feedbackRicevuti=feed;
}
public List<Feedback> getFeedbackRicevuti(){
return feedbackRicevuti;
}
e relativi Feedback in ManyToOne con l'Utente (in Feedback.java):
@ManyToOne(cascade=CascadeType.REFRESH)
@JoinColumn(name="AUTORE", referencedColumnName="ID", insertable=true, updatable=true, nullable=true)
private Utente autoreJoin;
public void setAutoreFeed(Utente ut){
autoreJoin=ut;
}
public Utente getAutoreFeed(){
return autoreJoin;
}
@ManyToOne()
@JoinColumn(name="RICEVENTE", referencedColumnName="ID", insertable=true, updatable=true, nullable=true)
private Utente riceventeJoin;
public void setRiceventeFeed(Utente ut){
riceventeJoin=ut;
}
public Utente getRiceventeFeed(){
return riceventeJoin;
}
Dichiarate così (in Feedback.java):
…
...
@Basic(optional = false)
@Column(name = "AUTORE", nullable = true,insertable=false,updatable=false)
private int autore;
@Basic(optional = false)
@Column(name = "RICEVENTE", nullable = true,insertable=false,updatable=false)
private int ricevente;
…
…
nel momento in cui tento l'eliminazione dell'utente diventa impossibile perchè non posso lasciare il feedback senza riferimento! Ho provato varie opzioni in cascade e con orphanremoval ma nulla.. help!:)