Erreur d'ajout d'une ligne avec un Foreign key(Struts2, Hibernate)
Bonjour, j'ai pas pu ajouter une ligne dans la table Naissance, a cause de du Mapping à ce que je pense, voilà j'ai deux classes, NaissanceModel et HopitalModel,
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
| package model;
import java.io.Serializable;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class NaissanceModel implements Serializable {
private int id;
private String prenom;
private String nom;
private Date date_naissance;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
prenom = prenom;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public Date getDate_naissance() {
return date_naissance;
}
public void setDate_naissance(Date date_naissance) {
this.date_naissance = date_naissance;
}
} |
et HopitalModel
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
| package model;
import java.io.Serializable;
import java.util.List;
public class HopitalModel implements Serializable {
private int id;
private String nom;
private String ville;
private List<NaissanceModel> naissance ;
public List<NaissanceModel> getNaissance() {
return naissance;
}
public void setNaissance(List<NaissanceModel> naissance) {
this.naissance = naissance;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getVille() {
return ville;
}
public void setVille(String ville) {
this.ville = ville;
}
} |
et Voici mon Hopital.hbm.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="model.HopitalModel" table="HOPITAL">
<id name="id" column="ID" type="integer">
<generator class="increment" />
</id>
<property name="nom" column="NOM" type="string"></property>
<property name="ville" column="VILLE" type="string"></property>
<list name="naissance" table="NAISSANCE" cascade="none" lazy="true" >
<key column="HOPITAL"></key>
<list-index base="0" column="IDX"></list-index>
<one-to-many class="model.NaissanceModel" />
</list>
</class>
</hibernate-mapping> |
et mon Naissance.hbm.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="model.NaissanceModel" table="NAISSANCE">
<id name="id" column="ID" type="integer">
<generator class="increment"></generator>
</id>
<property name="prenom" column="PRENOM" type="string"></property>
<property name="nom" column="NOM" type="string"></property>
<property name="date_naissance" column="DATE_NAISSANCE" type="date"></property>
</class>
</hibernate-mapping> |
J'ai crée un Service Naissance ou je mets tous mes Méthodes
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
| package service;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.sun.net.httpserver.Authenticator.Success;
import model.HopitalModel;
import model.NaissanceModel;
import util.HibernateUtil;
public class NaissanceService {
public List<HopitalModel> list() {
SessionFactory sf = HibernateUtil.getSessionFactory();
Session s = sf.openSession();
Transaction ts = s.beginTransaction();
List<HopitalModel> Hopitaux = null;
try {
Hopitaux = (List<HopitalModel>) s.createQuery("from HopitalModel")
.list();
} catch (HibernateException e) {
e.printStackTrace();
s.getTransaction().rollback();
}
s.flush();
ts.commit();
s.close();
return Hopitaux;
}
public String add_naissance(NaissanceModel ns) {
try {
SessionFactory sf = HibernateUtil.getSessionFactory();
Session s = sf.openSession();
Transaction ts = s.beginTransaction();
s.save(ns);
s.flush();
ts.commit();
s.close();
return "success";
} catch (Exception e) {
e.printStackTrace();
return "failure";
}
}
} |
et après voici mon action classe
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
| package action;
import java.util.List;
import service.NaissanceService;
import model.HopitalModel;
import model.NaissanceModel;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class NaissanceAction extends ActionSupport implements ModelDriven<NaissanceModel> {
NaissanceService ns = new NaissanceService();
NaissanceModel nm = new NaissanceModel();
private List<HopitalModel> HopitauxList;
public NaissanceAction() {
// TODO Auto-generated constructor stub
ns = new NaissanceService();
}
public String execute() {
HopitauxList = ns.list();
return SUCCESS;
}
public String addnaissance() {
String response = ns.add_naissance(nm);
System.out.println(response);
return response;
}
public List<HopitalModel> getHopitauxList() {
return HopitauxList;
}
public void setHopitauxList(List<HopitalModel> hopitauxList) {
HopitauxList = hopitauxList;
}
@Override
public NaissanceModel getModel() {
// TODO Auto-generated method stub
return nm;
}
} |
et Enfin voici mon struts.xml
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
| <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
<package name="default" extends="struts-default">
<action name="login" class="action.LoginAction" method="Velogin">
<result name="success" type="redirectAction">accueil</result>
<result name="input">/login.jsp</result>
<result name="failure">/login.jsp</result>
</action>
<action name="addnais" class="action.NaissanceAction" method="addnaissance">
<result name="success" type="redirectAction">accueil</result>
<result name="input" type="redirectAction">accueil</result>
<result name="failure">accueil.jsp</result>
</action>
<action name="add_hop" class="action.HopitalAction" method="add">
<result name="success" type="redirectAction" >accueil</result>
<result name="input">/login.jsp</result>
<result name="failure">/login.jsp</result>
</action>
<action name="accueil" class="action.NaissanceAction">
<result name="success">accueil.jsp</result>
<result name="input">accueil.jsp</result>
</action>
</package>
</struts> |
Dans ma base de données
j'ai deux tables
Citation:
Desc Hopital;
int id, String nom, String ville
Desc naissance;
int id,String prenom, String nom,date date_naissance,HOPITAL,IDX
Vraiment j'ai galéré pour ajouter une ligne mais son aucun resultat alors si vous pouvez m'aider je serai trop reconnaissant, merci