Partage
  • Partager sur Facebook
  • Partager sur Twitter

JavaEE

Persistence

Sujet résolu
    16 novembre 2010 à 22:09:37

    Bonjour,
    voila je vous explique mon problème.
    J'ai 3 tables dans ma base de données : utilisateur, album et proprietaire
    Chaque utilisateur peut être propriétaire de plusieurs albums.

    voici les 2 classes persistantes correspondantes :

    Utilisateur :
    /**
     *
     * @author Benjamin
     */
    @Entity
    @Table(name = "UTILISATEUR")
    @NamedQueries({
        @NamedQuery(name = "Utilisateur.findAll", query = "SELECT u FROM Utilisateur u"),
        @NamedQuery(name = "Utilisateur.findByIdUser", query = "SELECT u FROM Utilisateur u WHERE u.idUser = :idUser"),
        @NamedQuery(name = "Utilisateur.findByNomUser", query = "SELECT u FROM Utilisateur u WHERE u.nomUser = :nomUser"),
        @NamedQuery(name = "Utilisateur.findByPrenomUser", query = "SELECT u FROM Utilisateur u WHERE u.prenomUser = :prenomUser"),
        @NamedQuery(name = "Utilisateur.findByLoginUser", query = "SELECT u FROM Utilisateur u WHERE u.loginUser = :loginUser"),
        @NamedQuery(name = "Utilisateur.findByMdpUser", query = "SELECT u FROM Utilisateur u WHERE u.mdpUser = :mdpUser"),
        @NamedQuery(name = "Utilisateur.findByEmailUser", query = "SELECT u FROM Utilisateur u WHERE u.emailUser = :emailUser"),
        @NamedQuery(name = "Utilisateur.findByDateCreatUser", query = "SELECT u FROM Utilisateur u WHERE u.dateCreatUser = :dateCreatUser"),
        @NamedQuery(name = "Utilisateur.findByDateMajUser", query = "SELECT u FROM Utilisateur u WHERE u.dateMajUser = :dateMajUser")})
    public class Utilisateur implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "ID_USER")
        private Integer idUser;
        @Column(name = "NOM_USER")
        private String nomUser;
        @Column(name = "PRENOM_USER")
        private String prenomUser;
        @Column(name = "LOGIN_USER")
        private String loginUser;
        @Column(name = "MDP_USER")
        private String mdpUser;
        @Column(name = "EMAIL_USER")
        private String emailUser;
        @Column(name = "DATE_CREAT_USER")
        @Temporal(TemporalType.DATE)
        private Date dateCreatUser;
        @Column(name = "DATE_MAJ_USER")
        @Temporal(TemporalType.DATE)
        private Date dateMajUser;
        @ManyToMany(mappedBy = "utilisateurCollection")
        private Collection<Album> albumCollection;
    
        public Utilisateur() {
        }
    
        public Utilisateur(Integer idUser) {
            this.idUser = idUser;
        }
    
        public Integer getIdUser() {
            return idUser;
        }
    

    Album :
    @Entity
    @Table(name = "ALBUM")
    @NamedQueries({
        @NamedQuery(name = "Album.findAll", query = "SELECT a FROM Album a"),
        @NamedQuery(name = "Album.findByIdAlbum", query = "SELECT a FROM Album a WHERE a.idAlbum = :idAlbum"),
        @NamedQuery(name = "Album.findByNomAlbum", query = "SELECT a FROM Album a WHERE a.nomAlbum = :nomAlbum"),
        @NamedQuery(name = "Album.findByDescrAlbum", query = "SELECT a FROM Album a WHERE a.descrAlbum = :descrAlbum"),
        @NamedQuery(name = "Album.findByDateCreatAlbum", query = "SELECT a FROM Album a WHERE a.dateCreatAlbum = :dateCreatAlbum"),
        @NamedQuery(name = "Album.findByDateMajAlbum", query = "SELECT a FROM Album a WHERE a.dateMajAlbum = :dateMajAlbum")})
    public class Album implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "ID_ALBUM")
        private Integer idAlbum;
        @Column(name = "NOM_ALBUM")
        private String nomAlbum;
        @Column(name = "DESCR_ALBUM")
        private String descrAlbum;
        @Column(name = "DATE_CREAT_ALBUM")
        @Temporal(TemporalType.DATE)
        private Date dateCreatAlbum;
        @Column(name = "DATE_MAJ_ALBUM")
        @Temporal(TemporalType.DATE)
        private Date dateMajAlbum;
        @JoinTable(name = "PROPRIETAIRE", joinColumns = {
            @JoinColumn(name = "ID_ALBUM", referencedColumnName = "ID_ALBUM")}, inverseJoinColumns = {
            @JoinColumn(name = "ID_USER", referencedColumnName = "ID_USER")})
        @ManyToMany
        private Collection<Utilisateur> utilisateurCollection;
    
        public Album() {
        }
    
        public Album(Integer idAlbum) {
            this.idAlbum = idAlbum;
        }
    


    je vous ai épargné les getters et setters et les importations.

    Voici ma question : comment je peux récupérer tous les albums d'un utilisateur ?

    j'ai bien :

    @JoinTable(name = "PROPRIETAIRE", joinColumns = {
            @JoinColumn(name = "ID_ALBUM", referencedColumnName = "ID_ALBUM")}, inverseJoinColumns = {
            @JoinColumn(name = "ID_USER", referencedColumnName = "ID_USER")})
        @ManyToMany
        private Collection<Utilisateur> utilisateurCollection;
    

    mais je ne vois pas du tout comment l'utiliser.

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2010 à 22:09:37

      Le message qui suit est une réponse automatique activée par un modérateur.
      Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


      Merci d'utiliser les balises de code


      Bonjour,

      Les forums du Site du Zér0 disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
      Vous avez posté un code source sans utiliser cette fonctionnalité. Pourriez-vous éditer votre message en entourant votre code des balises <code > et </code > ?

      Cela aura pour effet de "colorer" votre code et donc d'en faciliter grandement la lecture. Vous aurez ainsi beaucoup plus de chances d'avoir des réponses.

      Voici un exemple de code non coloré avec la balise "citation" (mauvais exemple) :

      Citation

      int main(int argc, char *argv[])
      {
      long choixOperation;

      printf("Choisissez l'operation a effectuer");
      /* etc. */
      }



      Voici maintenant le même code coloré, si vous aviez utilisé la balise "code" (bon exemple) :

      int main(int argc, char *argv[])
      {
          long choixOperation;
      
          printf("Choisissez l'operation a effectuer");
          /* etc. */
      }
      


      C'est plus clair n'est-ce pas ? :)
      N'hésitez pas à éditer votre message pour changer la balise afin de colorer votre code.

      Plus d'informations à ce sujet


      Merci de votre compréhension :)
      Les modérateurs.
      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2010 à 0:49:36

        Et que ce passe t-il quand tu fait : getUtilisateurCollection() ?
        • Partager sur Facebook
        • Partager sur Twitter
        J'ai tous les badges d'OpenClassrooms.
          17 novembre 2010 à 19:41:09

          ça marche !! !Merci beaucoup !!! :)
          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2010 à 19:45:16

            N'oublie pas de mettre ton sujet en résolu.

            Merci
            • Partager sur Facebook
            • Partager sur Twitter
            J'ai tous les badges d'OpenClassrooms.
              22 novembre 2010 à 1:46:54

              J'ai une petite question : comment je peux insérer un propriétaire dans la base sans créer une classe java propriétaire ?
              • Partager sur Facebook
              • Partager sur Twitter
                22 novembre 2010 à 10:21:08

                Pour inserer un objet dans la base la logique voudrais que tu crée une classe propriétaire et que tu fasse la liaison. ça ne prend pas de temps de créer cette classe et c'est beaucoup plus efficace.

                Sinon tu peux toujours ecrire une requete hql, mais ça sera très très très sale comme code.
                • Partager sur Facebook
                • Partager sur Twitter
                J'ai tous les badges d'OpenClassrooms.
                  22 novembre 2010 à 16:14:57

                  oui j'ai préféré faire une classe propriétaire ! Beaucoup + propre ! :D !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 novembre 2010 à 2:25:46

                    J'ai un autre sujet sur le forum mais pas de réponse, voici le lien
                    lien ici

                    si vous pouvez y répondre aussi, ça m'aiderais beaucoup !
                    Merci
                    • Partager sur Facebook
                    • Partager sur Twitter

                    JavaEE

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown