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

Java EE Discussion :

Update en EJB-QL


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Par défaut Update en EJB-QL
    Bonjour,

    J'utilise EJB3, netbeans 5.5, SJSAS 9.
    J'ai créé un entity bean dont voici l'extrait
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Entity
    @Table(name = "region")
    @NamedQueries( {
            @NamedQuery(name = "Region.findByRegid", query = "SELECT r FROM Region r WHERE r.regid = :regid"),
            @NamedQuery(name = "Region.findByRegnom", query = "SELECT r FROM Region r WHERE r.regnom = :regnom"),
            @NamedQuery(name = "Region1.modif", query = "UPDATE  Region1 AS  r SET r.zneid = :zneid  WHERE r.regid = :regid")
        })
    public class Region1 implements Serializable {
    ...
    Ces requêtes marchent très bien, mais je veux faire une modification de plusieurs champs par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @NamedQuery(name = "Region1.modif", query = "UPDATE  Region1 AS  r SET r.zneid = :zneid , r.regnom = :regnom WHERE r.regid = :regid")
    alors qu'il n'accepte pas les virgules.

    Est ce que quelqu'un a une idée?

    Merci d'avance pour votre préoccupation,
    Diamskel

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Pourquoi ne pas modifier directement les attributs de ton objet par ses setters, c'est nettement
    plus simple.

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Par défaut
    Salut,

    Merci fr1man.
    cet entity region est en relation (one to many) avec un autre entity zone, et donc il y a un entity de relation nommé regionPK contenant l'id de region et l'id de zone. De ce fait, si j'ajoute d'autres setters, il n'accepte pas lors de l'ajout.

    Mais je pense que je vais créer un autre entity region2 par exemple qui contiendra les setters dont j'aurai besoin pour la modification. Le hic dans tout ça est que je vais avoir beaucoup d'entity pour une seule table.

    Merci encore,
    Diamskel.

  4. #4
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Par défaut
    le fait que tu es un oneToMany n'empeche pas de faire un merge() sur ton entity

    moi, perso, je n'ai jamais fait de requete Update EJB-QL, persit/merge/remove... sont mes amis

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut Update en EJB-QL
    Bonsoir,j'ai eu le même problème de modification en ejb-ql;

    TABLE REGION(regid,regnom,zneid);

    je fait comme suit dans la session bean pour faire la modification du table region dont l'Idf est regid :
    ..........
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                 Query query = em.createNamedQuery("Region.findByRegid");
                 query.setParameter("regid",regid);
                 List<Region> resultat = query.getResultList();
                 Iterator it = resultat.iterator();
     
                 this.region=(Region)it.next();
                 region.setRegnom(RegionNom);
                 region.getRegionPK().setZneid(ZoneId);
                 em.merge(region);
    ...............

    le problème est: quand je modifie à partir du formulaire de modification la libelle region seulement,c'est OK,
    par contre si je modifie zneid ,on a erreur,pas de modification de la zneid dans la table REGION(regid,regnom,zneid);

    Est-ce qu'il y a quelqu'un qui peut m'aider?
    Merci,
    Cordialement
    heriniain_a1

  6. #6
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Par défaut
    est-ce-que le oneToMany liée a Region sont en cascadeType.ALL ou cascadeType.MERGE ou rien ???

    quelle est l'erreur précise ?

    et montre nous tes Entities......

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 11h40
  2. Problème avec UPDATE EJB + JSF
    Par GeantBioHazard dans le forum JSF
    Réponses: 8
    Dernier message: 19/02/2008, 13h34
  3. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59
  4. Réponses: 3
    Dernier message: 10/11/2002, 11h03
  5. update et virgule
    Par Delph dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/08/2002, 14h40

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