IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Métier dans une application JEE


Sujet :

Développement Web en Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Métier dans une application JEE
    Bonsoir, je veux récupérer le nombre des entrées dans un stock, plus précisement, j'ai une table article et une table mouvement et deux tables entrée et sortie qui héritent de mouvement. J'ai pu crée une entrée à chaque fois qu'un article est crée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void createArticle(Article article) {
    		// em.find(Article.class, article.getCode_Art()) ;
    		em.persist(article);
    		Entree entree = new Entree();
    		entree.setDate(new Date());
    		entree.setQuantité(article.getQuantité());
    		em.persist(entree);
    	}
    Cette méthode est dans la classe ArticleDAO, mais c'est pas exactement ce que je veux faire, parce que cette facon de faire m'affiche le nouveau article qui a comme attribut quantité=200, mais moi ce que je veux faire exactement c'est par rapport à chaque unité, c'est à dire calculer chaque entrée et sortie pour pouvoir faire des statitsiques sur le mouvement. Par exemple : J'ai un article X dans ma base, et j'ai 200 unités de cet article et je viens d'en commander 50 unité de plus , je veux que ces 50 unités s'ajoutent aux 200 unités et au meme temps s'ajoutent aux entrées. Je bloque un peu sur cette phase, si vous pouvez m'aider. (Je travaille avec EJB3 et JPA.) merci

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Points : 242
    Points
    242
    Par défaut
    Bonjour,
    je ne suis pas sûr de bien comprendre ton problème. En fait ce que tu veux faire c'est pour chaque commande, mettre à jour la quantité de l'article et ajouter une nouvelle entrée, est-ce que c'est bien ça ? (Dans ce cas là, il suffira de faire un merge sur l'article et un persist sur une nouvelle entrée).

    Cependant je pense que les entrées et sorties doivent être reliées à l'article, car lorsque tu vas vouloir faire des statistiques, tu ne sauras pas à quel article est reliée l'entrée où la sortie, à moins que j'ai mal saisi ton problème !

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    En fait, ce que je veux faire exactement, c'est pour chaque quantité ajouté à un article X, cette meme quantité s'ajoute à l'entrée relative à cet article.

    Oui, la classe entrée et sortie héritent d'une classe Mouvement, qui est reliée à la classe Article par une relation ManyToMany. Et dans la base de donnée, j'ai une table Mouvement et une table Article.

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Points : 242
    Points
    242
    Par défaut
    Je ne comprends pas pourquoi une relation ManyToMany, car d'après ce que tu me dis, une entrée est reliée à un seul article et un article ne possède qu'une seule entrée.

    Sinon tu peux créer une méthode updateQuantiteArticle(Long idArticle, int qte), dedans tu compares la nouvelle quantité de l'article, à l'ancienne qui est en base. Si elle est supérieur alors tu récupères l'entrée correspondante à l'article et tu la mets à jour, sinon tu fais la même chose pour la sortie et bien sûr à la fin tu mets à jour la nouvelle quantité de ton article.

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    J'ai voulu suivre ton conseil, mais quand j'appelle dans cette méthode la quantité de Article, il reconnait pas, je peux pas appeler getQuantité de la classe de persistence dans un DAO ??

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Points : 242
    Points
    242
    Par défaut
    Tu peux nous montrer le code que tu as écrit !

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void updateQuanArticle(int code_Art, int quantité) {
    		Article article = new Article() ;
    		Entree entree = new Entree();
    		Sortie sortie = new Sortie() ;
     
    		if (article.getQuantité() < quantité )
    			entree.setQuantité(article.getQuantité()) ;
    Jusque là, j'ai écris ça, mais je doute fort que ca soit juste.

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Points : 242
    Points
    242
    Par défaut
    ben il faut que tu récupères ton article en base (avec le code article) à l'aide de ton entityManager, car là tu crées un article vide donc c'est normal que getQuantite ne te retourne rien !

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Et là ?? Désolé je debute en java et en jee, je suis en train de lire les tuto et travailler au fur et à mesur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void updateQuanArticle(int code_Art, int quantité) {
    	Article article = 	em.find(Article.class, code_Art) ;
    	Entree entree = new Entree() ;
    	Sortie sortie = new Sortie() ;
    	if (article.getQuantité() < quantité )
    	entree.setQuantité(quantité) ;
    	else 
    		sortie.setQuantité(quantité) ;
    	em.merge(entree) ;
    	em.merge(sortie) ;
    	em.merge(article) ;

  10. #10
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 196
    Points : 242
    Points
    242
    Par défaut
    En fait quand tu fais Entree entree = new Entree(); tu créé un nouvel objet (qui n'est pas lié avec une entité de ta bdd), donc si tu fais un merge dessus il ne se passera rien du tout. Ce qu'il faut faire c'est récupérer l'entrée correspondant à ton article à l'aide d'une requête en base.
    C'est la même chose pour la sortie.

    Il faut également que tu mettes à jour la quantité de ton article avant de faire le merge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    article.setQuantite(quantite);
    em.merge(article);

Discussions similaires

  1. Le filtre urlrewrite dans une application JEE
    Par Imane198 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 06/01/2012, 14h57
  2. JAAS dans une application JEE Web
    Par yashiro dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 21/02/2011, 16h29
  3. La nécessité des Servlet dans une application JEE
    Par mesken dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 24/01/2011, 15h48
  4. JAAS dans une application JEE
    Par summer_spring_moon dans le forum Développement Web en Java
    Réponses: 14
    Dernier message: 08/12/2010, 11h43
  5. Intégrer projet dans une application JEE 6
    Par YoNoSe dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 22/07/2010, 03h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo