[JSF / Hibernate / Oracle BDD] Problème d'insertion dans deux tables à la fois
Bonjour tout le monde
J'ai un petit souci au niveau de l'ajout d'un enregistrement dans la BD, et je demande votre aide s'il vous plait.
En fait j'ai deux tables: Facture et Fournisseur, avec une cardinalité ManyToOne du coté de la table Facture, et OneToMany du coté de la table Fournisseur.
Je veux ajouter une facture à la BD en remplissant tous ses champs dans un formulaire JSF, et parmi les informations à fournir à la facture il y’a celle concernant le fournisseur.
Je vous communique quelque bouts du code:
ManagedBean FactureBean: (action du bouton de la page JSF)
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
|
public String EnregistrerFactureBo()
{
// Informations concernant le fournisseur:
fournisseur.setSociete(fournisseur.getSociete());
fournisseur.setAdresse(fournisseur.getAdresse());
fournisseur.setEmail(fournisseur.getEmail());
Engagement e = factureDao.Find_Engagement(IdEngagement);
Statut s = factureDao.Find_Statut(IdStatut);
Utilisateur u = factureDao.Find_Utilisateur(CodeUtilisateur);
Fournisseur f = fournisseurDao.AjoutFournisseur(fournisseur);
if(f!=null)
{
Date date = new Date( System.currentTimeMillis() );
// SimpleDateFormat sdf = new SimpleDateFormat( "dd/MM/yyyy hh:mm:ss" );
// System.out.println( sdf.format( date ) );
facture.setNumeroFacture(facture.getNumeroFacture());
facture.setReference(facture.getReference());
facture.setEngagement(e);
facture.setFournisseur(fournisseur);
facture.setMontant(facture.getMontant());
facture.setStatut(s);
facture.setUtilisateur(u); // Je dois récupérer l'User connécté!!!!
facture.setDateReceptionPhysique(date);
facture.setDateReceptionSysteme(date);
}
Boolean resultat = factureDao.EnregistrerBo(facture);
if(resultat==true)
{
return "index";
}
else
{
return "echec";
}
} |
FactureDAO: (fonction d'ajout de la facture)
Code:
1 2 3 4 5 6 7 8 9
|
public Boolean EnregistrerBo(Facture f)
{
session.beginTransaction();
session.save(f);
session.getTransaction().commit();
session.close();
return true;
} |
FournisseurDAO: (fonction d'ajout du fournisseur)
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
public Fournisseur AjoutFournisseur(Fournisseur f)
{
Session session =sessionFactory.openSession();
session.beginTransaction();
session.save(f);
session.getTransaction().commit();
session.close();
return fournisseur;
} |
ManagedBean FournisseurBean:
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 Beans;
import Entités.Fournisseur;
import javax.faces.bean.ManagedBean;
@ManagedBean
public class FournisseurBean {
private Fournisseur fournisseur = new Fournisseur();
// Constructeur:
public FournisseurBean() {
this.fournisseur = new Fournisseur();
}
// Setters et Getters:
public Fournisseur getFournisseur() {
return fournisseur;
}
public void setFournisseur(Fournisseur fournisseur) {
this.fournisseur = fournisseur;
}
} |
Ma page JSF:
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
|
<h:form>
<p:growl id="msg" showDetail="true" life="3000" />
<p:panel id="panel" header="Enregistrement d'une facture" style="width: 600px;">
<p:messages id="msgs" />
<h:panelGrid columns="3" cellpadding="5">
<p:outputLabel for="NuméroFacture" value="Numéro Facture:" />
<p:inputText id="NuméroFacture" label="NuméroFacture" value="#{factureBean.facture.numeroFacture}" required="true">
<f:validateLength minimum="2" />
</p:inputText> <br/>
<p:outputLabel for="Référence" value="Référence:" />
<p:inputText id="Référence" label="Référence" value="#{factureBean.facture.reference}" required="true">
<f:validateLength minimum="2" />
</p:inputText> <br/>
<p:outputLabel value="Engagement:" />
<p:selectOneMenu value="#{factureBean.idEngagement}" >
<f:selectItem itemLabel="select one..." itemValue="" />
<f:selectItems var="cat" value="#{factureBean.listeTypeEngagement}" itemLabel="#{cat.typeEngagement}" itemValue="#{cat.idEngagement}" />
</p:selectOneMenu>
<p:spacer></p:spacer>
<p:outputLabel for="Société" value="Fournisseur: (Société):" />
<p:inputText id="Société" label="Société" value="#{fournisseurBean.fournisseur.societe}" required="true">
<f:validateLength minimum="2" />
</p:inputText> <br/>
<p:outputLabel for="AdresseFournisseur" value="Adresse Fournisseur" />
<p:inputText id="AdresseFournisseur" label="AdresseFournisseur" value="#{fournisseurBean.fournisseur.adresse}" required="true">
<f:validateLength minimum="2" />
</p:inputText> <br/>
<p:outputLabel for="EmailFournisseur" value="Email Fournisseur:" />
<p:inputText id="EmailFournisseur" label="EmailFournisseur" value="#{fournisseurBean.fournisseur.email}" required="true">
<f:validateLength minimum="2" />
</p:inputText> <br/>
<p:outputLabel for="Montant" value="Montant Facture:" />
<p:inputText id="Montant" label="Montant" value="#{factureBean.facture.montant}" required="true">
<f:validateLength minimum="2" />
</p:inputText> <br/>
<p:outputLabel value="Statut:" />
<p:selectOneMenu value="#{factureBean.idStatut}" >
<f:selectItem itemLabel="select one..." itemValue="" />
<f:selectItems var="cat" value="#{factureBean.listeIntituleStatut}" itemLabel="#{cat.intituleStatut}" itemValue="#{cat.idStatut}" />
</p:selectOneMenu>
<p:spacer></p:spacer>
<p:outputLabel value="Utilisateur:" />
<p:selectOneMenu value="#{factureBean.codeUtilisateur}" >
<f:selectItem itemLabel="select one..." itemValue="" />
<f:selectItems var="cat" value="#{factureBean.listeLogin}" itemLabel="#{cat.login}" itemValue="#{cat.codeUtilisateur}" />
</p:selectOneMenu>
<p:spacer></p:spacer>
<p:commandButton value="Enregistrer" action="#{factureBean.EnregistrerFactureBo()}" update="panel" icon="ui-icon-check" ajax="false">
</p:commandButton>
</h:panelGrid>
</p:panel>
</h:form> |
J'arrive à ajouter la facture à la base de données, mais qu'on je fais un select sur le nom du fournisseur par exemple depuis la table fournisseur, on m'affiche qu'in y a 10 lignes sélectionnées mais je n'arrive pas à les visualiser. Quelqu'un a une idée sur le problème s'il vous plait?