MAJ en Cascade sous hibernate
Bonjour ,
Je travaille sur une application web sous Hibernate Spring et JSF et j'ai deux classe Modérateur et compte qui se sont définit comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
package ma.it.model;
// Generated 23 mai 2012 14:06:20 by Hibernate Tools 3.4.0.CR1
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.OneToOne;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
/**
* Moderateur generated by hbm2java
*/
@Entity
@Table(name = "moderateur", catalog = "bdd_itrekrute")
public class Moderateur implements java.io.Serializable {
private Integer idMembre;
private Compte compte=new Compte();
private String nom;
private String prenom;
private String adresse;
private Integer tel;
private String email;
public Moderateur() {
}
public Moderateur(Compte compte) {
}
public Moderateur(Compte compte, String nom, String prenom, String adresse,
Integer tel, String email, String civilite) {
this.compte = compte;
this.nom = nom;
this.prenom = prenom;
this.adresse = adresse;
this.tel = tel;
this.email = email;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idMembre", unique = true, nullable = false)
public Integer getIdMembre() {
return this.idMembre;
}
public void setIdMembre(Integer idMembre) {
this.idMembre = idMembre;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "login", nullable = false)
public Compte getCompte() {
return this.compte;
}
public void setCompte(Compte compte) {
this.compte = compte;
}
@Column(name = "nom", length = 254)
public String getNom() {
return this.nom;
}
public void setNom(String nom) {
this.nom = nom;
}
@Column(name = "prenom", length = 254)
public String getPrenom() {
return this.prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
@Column(name = "adresse", length = 254)
public String getAdresse() {
return this.adresse;
}
public void setAdresse(String adresse) {
this.adresse = adresse;
}
@Column(name = "tel")
public Integer getTel() {
return this.tel;
}
public void setTel(Integer tel) {
this.tel = tel;
}
@Column(name = "email", length = 254)
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
package ma.it.model;
// Generated 23 mai 2012 14:06:20 by Hibernate Tools 3.4.0.CR1
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**
* Compte generated by hbm2java
*/
@Entity
@Table(name = "compte", catalog = "bdd_itrekrute")
public class Compte implements java.io.Serializable {
private String login;
private String password;
private Set<Moderateur> moderateurs = new HashSet<Moderateur>(0);
public Compte() {
}
public Compte(String login,String password) {
this.login = login;
this.password=password;
}
public Compte(String login, String password,
Set<Moderateur> moderateurs, ) {
this.login = login;
this.password = password;
this.moderateurs = moderateurs;
}
@Id
@Column(name = "login", unique = true, nullable = false, length = 254)
public String getLogin() {
return this.login;
}
public void setLogin(String login) {
this.login = login;
}
@Column(name = "password", length = 254)
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "compte")
@OneToMany(fetch = FetchType.LAZY, mappedBy = "compte")
public Set<Moderateur> getModerateurs() {
return this.moderateurs;
}
public void setModerateurs(Set<Moderateur> moderateurs) {
this.moderateurs = moderateurs;
}
} |
Les classes Services de ces deux classes sont définit comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package ma.it.service;
import java.util.List;
import ma.it.model.Compte;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("CompteService")
@Transactional
public class CompteService {
@Autowired
private SessionFactory sessionFactory;
@SuppressWarnings("unchecked")
public List<Compte> findAll() {
return sessionFactory.getCurrentSession().createQuery("from Compte compte").list();
}
public void save(Compte c)
{
sessionFactory.getCurrentSession().saveOrUpdate(c);
}
public void remove(Compte c) {
sessionFactory.getCurrentSession().delete(c);
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
package ma.it.service;
import java.util.List;
import ma.it.model.Moderateur;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("ModerateurService")
@Transactional
public class ModerateurService {
@Autowired
private SessionFactory sessionFactory;
@SuppressWarnings("unchecked")
public List<Moderateur> findAll() {
return sessionFactory.getCurrentSession().createQuery("from Moderateur moderateur").list();
}
public void save(Moderateur m)
{
sessionFactory.getCurrentSession().saveOrUpdate(m);
}
public void remove(Moderateur m) {
sessionFactory.getCurrentSession().delete(m);
}
} |
Et les classes Bean :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
package ma.it.bean;
import java.awt.event.ActionEvent;
import java.io.Serializable;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
import ma.it.model.Compte;
import org.richfaces.model.selection.SimpleSelection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import ma.it.service.CompteService;
@Component("CompteBean")
@Scope("session")
public class CompteBean implements Serializable {
@Autowired
private transient CompteService CompteService;
private transient HtmlDataTable CompteTable;
private List<Compte> ComptesList;
private Compte currentCompte=new Compte();
private SimpleSelection selection = new SimpleSelection();
private Set<Integer> keys = new HashSet<Integer>();
private int currentRow;
private String currentloginFilterValue;
@PostConstruct
public void init(){
ComptesList=CompteService.findAll();
this.currentCompte=new Compte();
}
public void fetchCurrentRow(ActionEvent event) {
int login=Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("login"));
currentRow = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("row"));
for (Compte c : ComptesList) {
if (c.getLogin().equals(login)){
currentCompte=c;
break;
}
}
}
public void SaveOrUpdate() {
CompteService.save(currentCompte);
init();
keys.clear();
keys.add(currentRow);
this.currentCompte=new Compte();
}
public void delete() {
CompteService.remove(currentCompte);
init();
this.currentCompte=new Compte();
}
public void refresh()
{
this.currentCompte=new Compte();
}
public void resetFilter() {
this.currentCompte=new Compte();
setCurrentloginFilterValue("");
System.out.println("reset ");
}
/**************** getters & setters ****************/
public HtmlDataTable getCompteTable() {
return CompteTable;
}
public void setCompteTable(HtmlDataTable compteTable) {
CompteTable = compteTable;
}
public List<Compte> getComptesList() {
return ComptesList;
}
public void setComptesList(List<Compte> comptesList) {
ComptesList = comptesList;
}
public Compte getCurrentCompte() {
return currentCompte;
}
public void setCurrentCompte(Compte currentCompte) {
this.currentCompte = currentCompte;
}
public SimpleSelection getSelection() {
return selection;
}
public void setSelection(SimpleSelection selection) {
this.selection = selection;
}
public Set<Integer> getKeys() {
return keys;
}
public void setKeys(Set<Integer> keys) {
this.keys = keys;
}
public int getCurrentRow() {
return currentRow;
}
public void setCurrentRow(int currentRow) {
this.currentRow = currentRow;
}
public String getCurrentloginFilterValue() {
return currentloginFilterValue;
}
public void setCurrentloginFilterValue(String currentNomFilterValue) {
this.currentloginFilterValue = currentNomFilterValue;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
package ma.it.bean;
import java.awt.event.ActionEvent;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
import ma.it.service.ModerateurService;
import ma.it.model.Compte;
import ma.it.model.Moderateur;
import org.richfaces.model.selection.SimpleSelection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import ma.it.service.CompteService;
@Component("ModerateurBean")
@Scope("session")
public class ModerateurBean {
@Autowired
private transient ModerateurService ModerateurService;
private transient HtmlDataTable ModerateurTable;
private List<Moderateur> ModerateursList;
private Moderateur currentModerateur=new Moderateur();
private SimpleSelection selection = new SimpleSelection();
private Set<Integer> keys = new HashSet<Integer>();
private int currentRow;
private String currentIdFilterValue;
private String currentNomFilterValue;
@PostConstruct
public void init(){
ModerateursList=ModerateurService.findAll();
this.currentModerateur=new Moderateur();
}
public void fetchCurrentRow(ActionEvent event) {
int idModerateur=Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idMembre"));
currentRow = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("row"));
for (Moderateur m : ModerateursList) {
if (m.getIdMembre().equals(idModerateur)){
currentModerateur=m;
break;
}
}
}
public void SaveOrUpdate() {
CompteBean cb=new CompteBean();
cb.setCurrentCompte(currentModerateur.getCompte());
cb.SaveOrUpdate();
ModerateurService.save(currentModerateur);
init();
keys.clear();
keys.add(currentRow);
this.currentModerateur=new Moderateur();
}
public void delete() {
CompteBean cb=new CompteBean();
cb.setCurrentCompte(currentModerateur.getCompte());
ModerateurService.remove(currentModerateur);
cb.delete();
init();
this.currentModerateur=new Moderateur();
}
public void refresh()
{
this.currentModerateur=new Moderateur();
}
public void resetFilter() {
this.currentModerateur=new Moderateur();
setCurrentIdFilterValue("");
setCurrentNomFilterValue("");
System.out.println("reset ");
}
/**************** getters & setters ****************/
public HtmlDataTable getModerateurTable() {
return ModerateurTable;
}
public void setModerateurTable(HtmlDataTable ModerateurTable) {
this.ModerateurTable = ModerateurTable;
}
public List<Moderateur> getModerateursList() {
return ModerateursList;
}
public void ModerateursList(List<Moderateur> ModerateursList) {
this.ModerateursList = ModerateursList;
}
public Moderateur getCurrentModerateur() {
return currentModerateur;
}
public void setcurrentModerateur(Moderateur currentModerateur) {
this.currentModerateur = currentModerateur;
}
public void setSelection(SimpleSelection selection) {
this.selection = selection;
}
public SimpleSelection getSelection() {
return selection;
}
public void setKeys(Set<Integer> keys) {
this.keys = keys;
}
public Set<Integer> getKeys() {
return keys;
}
public void setCurrentRow(int currentRow) {
this.currentRow = currentRow;
}
public int getCurrentRow() {
return currentRow;
}
public String getCurrentIdFilterValue() {
return currentIdFilterValue;
}
public void setCurrentIdFilterValue(String currentIdFilterValue) {
this.currentIdFilterValue = currentIdFilterValue;
}
public String getCurrentNomFilterValue() {
return currentNomFilterValue;
}
public void setCurrentNomFilterValue(String currentNomFilterValue) {
this.currentNomFilterValue = currentNomFilterValue;
}
} |
Le problème c'est que je n'arrive pas à enregistrer ou modifier ou supprimer un modérateur et son compte au même temps .
avez vous des idées.???