Rechercher : dans
Par :

JSP>SERVLET>EJB SESSION>JPA>Clé Compos

princejude, le 1 nov 2009 à 15:48:16 
 Signaler ce message aux modérateurs

Bonjour,
salu je suis débutant en programmation J2EE.j'ecrit une application de bibliotheque avec netbeans et SGBD ORACLE avec 3 tables: LECTEUR OUVRAGE et la table EMPRUNT.
description:
lecteur(id_lecteur String,nom String,prenom String,contact String)
ouvrage(id_ouvr String, titre String, auteur String)
emprunt(id_ouvr,id_lecteur,deb Date,fin Date, eff Date)

Avec l'outil netbeans toutes les classe entités ont été générées automatiquement.

//classe EmpruntPK

public class EmpruntPK implements Serializable {
@Basic(optional = false)
@Column(name = "ID_LECTEUR", nullable = false, length = 12)
private String idLecteur;
@Basic(optional = false)
@Column(name = "ID_OUVR", nullable = false, length = 12)
private String idOuvr;

public EmpruntPK() {
}

public EmpruntPK(String idLecteur, String idOuvr) {
this.idLecteur = idLecteur;
this.idOuvr = idOuvr;
}

public String getIdLecteur() {
return idLecteur;
}

public void setIdLecteur(String idLecteur) {
this.idLecteur = idLecteur;
}

public String getIdOuvr() {
return idOuvr;
}

public void setIdOuvr(String idOuvr) {
this.idOuvr = idOuvr;
}

//classe Emprunt

@Entity
@Table(name = "EMPRUNT", catalog = "", schema = "YAPO")
@NamedQueries({@NamedQuery(name = "Emprunt.findAll", query = "SELECT e FROM Emprunt e"), @NamedQuery(name = "Emprunt.findByIdLecteur", query = "SELECT e FROM Emprunt e WHERE e.empruntPK.idLecteur = :idLecteur"), @NamedQuery(name = "Emprunt.findByIdOuvr", query = "SELECT e FROM Emprunt e WHERE e.empruntPK.idOuvr = :idOuvr"), @NamedQuery(name = "Emprunt.findByDateDeb", query = "SELECT e FROM Emprunt e WHERE e.dateDeb = :dateDeb"), @NamedQuery(name = "Emprunt.findByDateFin", query = "SELECT e FROM Emprunt e WHERE e.dateFin = :dateFin"), @NamedQuery(name = "Emprunt.findByDateEff", query = "SELECT e FROM Emprunt e WHERE e.dateEff = :dateEff")})
public class Emprunt implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected EmpruntPK empruntPK;
@Column(name = "DATE_DEB")
@Temporal(TemporalType.DATE)
private Date dateDeb;
@Column(name = "DATE_FIN")
@Temporal(TemporalType.DATE)
private Date dateFin;
@Column(name = "DATE_EFF")
@Temporal(TemporalType.DATE)
private Date dateEff;
@JoinColumn(name = "ID_LECTEUR", referencedColumnName = "ID_LECTEUR", nullable = false, insertable = false, updatable = false)
@ManyToOne(optional = false)
private Lecteur lecteur;
@JoinColumn(name = "ID_OUVR", referencedColumnName = "ID_OUVR", nullable = false, insertable = false, updatable = false)
@ManyToOne(optional = false)
private Ouvrage ouvrage;

public Emprunt() {
}


public Emprunt(EmpruntPK empruntPK) {
this.empruntPK = empruntPK;
}

public Emprunt(String idLecteur, String idOuvr) {
this.empruntPK = new EmpruntPK(idLecteur, idOuvr);
}

public EmpruntPK getEmpruntPK() {
return empruntPK;
}

public void setEmpruntPK(EmpruntPK empruntPK) {
this.empruntPK = empruntPK;
}

public Date getDateDeb() {
return dateDeb;
}

public void setDateDeb(Date dateDeb) {
this.dateDeb = dateDeb;
}

public Date getDateFin() {
return dateFin;
}

public void setDateFin(Date dateFin) {
this.dateFin = dateFin;
}

public Date getDateEff() {
return dateEff;
}

public void setDateEff(Date dateEff) {
this.dateEff = dateEff;
}

public Lecteur getLecteur() {
return lecteur;
}

public void setLecteur(Lecteur lecteur) {
this.lecteur = lecteur;
}

public Ouvrage getOuvrage() {
return ouvrage;
}

public void setOuvrage(Ouvrage ouvrage) {
this.ouvrage = ouvrage;
}

j'ai écris l'intarface EmpruntFacadeLocal suivant

// interface EmpruntFacadeLocal

@Local
public interface EmpruntFacadeLocal {
void create(Emprunt ouvrage);

void edit(Emprunt ouvrage);

void remove(Emprunt ouvrage);

Emprunt find(Object id);

Collection<Emprunt> findAll();

void enregistrerEmprunt(String id_ouvr,String id_lecteur, Date deb,Date fin,Date eff);
}

j'ai écrit EmpruntFacadeBean suivant
// EmpruntFacadeBean
@Stateless
public class EmpruntFacadeBean implements EmpruntFacadeRemote, EmpruntFacadeLocal {
@PersistenceContext
private EntityManager em;
private EmpruntPK epk;
public void create(Emprunt emprunt) {
em.persist(emprunt);
}

public void edit(Emprunt emprunt) {
em.merge(emprunt);
}

public void remove(Emprunt emprunt) {
em.remove(em.merge(emprunt));
}

public Emprunt find(Object id) {
return em.find(entity.classes.Emprunt.class, id);
}

public Collection<Emprunt> findAll() {
return em.createQuery("select object(o) from Emprunt as o").getResultList();
}
public void enregistrerEmprunt(String id_ouvr,String id_lecteur, Date deb,Date fin,Date eff) {

if(em.find(Emprunt.class,???????????????)==null)
{
Emprunt dpt=new Emprunt();
dpt.??????? //id_lecteur
dpt.??????? //id_ouvr
dpt.setDateDeb(deb);
dpt.setDateFin(fin);
dpt.setDateEff(eff);
em.persist(dpt);
em.flush();
System.out.print("\nENregistrement effectué!");
}
else
{
System.out.print("\nCe lecteur existe deja");
}
}
}

PROBLEME : La persitance au niveau des classes Lecteur et Ouvrage passent correctement car il me faut utiliser une seule clé, tandis que la classe Emprunt me posent toujour probleme.en fait je me perd dans l'écriture de la methode "enregistrerEmprunt()" . Aussi comment pourrais-je l'invoquer dans une servlet?

qulequ'un peut-il me venir en aide?merci d'avence pr toutes vos réactions.

Configuration: Windows XP Internet Explorer 6.0

Meilleures réponses pour « JSP>SERVLET>EJB SESSION>JPA>Clé Compos » dans :
Avast familial : renouveler / enregistrer sa clé de licence Voir1) Obtenir une nouvelle licence 2) Enregistrer sa nouvelle licence 1) Obtenir une nouvelle licence 1.1) Pour renouveler la clé de licence, se rendre sur le site d'Avast et remplir le formulaire d'inscription qui se trouve ICI. 1.2)...
Formater une clé USB VoirLes clés USB doivent nécessairement être formatées avec le système de fichiers FAT (FAT16 ou FAT32) pour pouvoir être utilisées par les principaux systèmes d'exploitation. Sous Windows Or, pour une clé USB de capacité supérieure à 32Mo, Windows...
Ouvrir plusieurs sessions simultanément sous MSN/WLM VoirPar défaut, il n'est possible d'ouvrir qu'une seule session à la fois sous MSN Messenger ou Windows Live Messenger. Cependant, il est possible de modifier ce comportement et permettre ainsi l'ouverture et la connexion de plusieurs sessions en...
Servlets - Première Servlet VoirPremiere servlet Voici un exemple simple de servlet dont le seul but est d'afficher du texte sur le navigateur du client : import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class PremiereServlet extends HttpServlet { ...
Servlets - Gestion des sessions VoirHTTP: un protocole non connecté Le protocole HTTP est un protocole non connecté (on parle aussi de protocole sans états, en anglais stateless protocol), cela signifie que chaque requête est traitée indépendamment des autres et qu'aucun historique...
Introduction aux Java Server Pages VoirPrésentation des Java Server Pages Les JSP (Java Server Pages) sont un standard permettant de développer des applications Web interactives, c'est-à-dire dont le contenu est dynamique. C'est-à-dire qu'une page web JSP (repérable par l'extension...