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

JPA Java Discussion :

named query manyToMany


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Par défaut named query manyToMany
    Bonjour,

    J'ai 3 entités User, Group et Role,

    c'est une relation manyToMany entre chaque

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class User{
    ...
    @ManyToMany
    @JoinTable(name = "usr_rel_users_groups",
      joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
      inverseJoinColumns = @JoinColumn(name = "group_id", referencedColumnName = "id"))
    private Set<Group> groups = new HashSet<Group>();
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Group {
    ...
    @ManyToMany
    @JoinTable (name = "usr_rel_groups_roles",
      joinColumns = @JoinColumn(name = "group_id", referencedColumnName = "id"),
      inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
    private Set<Role> roles = new HashSet<Role>();
     
    @ManyToMany(mappedBy = "groups")
    private Set<User> users = new HashSet<User>();
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Role {
    ...
    @ManyToMany(mappedBy = "roles")
    private Set<Group> groups = new HashSet<Group>();
    ...
    }
    J'ai une namedQuery qui utilise les 3 entités,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @NamedQuery(name="findUsersByRole",
            query="SELECT user FROM User user JOIN user.groups group JOIN group.roles role WHERE role.name = :roleName")
    mais quand je démare le serveur il me dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Errors in named queries: findUsersByRole
    mais le stackTrace ne contient pas assez d'info que pour avoir une idée d'où vient l'erreur

    Est-ce que vous avez une idée de l'erreur?

  2. #2
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Par défaut
    Pour ne pas rester bloqué trop longtemps j'ai utilisé une native query

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public List<User> findUsersByRole(String roleName) {
            String sqlQuery = "select u.*" +
                    " from usr_users u, usr_rel_users_groups ug, usr_rel_groups_roles gr, usr_roles r" +
                    " where u.ID = ug.USER_ID" +
                    " and ug.GROUP_ID = gr.GROUP_ID" +
                    " and gr.ROLE_ID = r.ID" +
                    " and r.NAME = :roleName";
            Query query = getEntityManager().createNativeQuery(sqlQuery, User.class);
            query.setParameter("roleName", roleName);
            return query.getResultList();
        }
    Mais si quelqu'un a une idée de comment faire ca avec une named query, je suis preneur.

Discussions similaires

  1. [Data] type= FetchType.LAZY+Named query
    Par sarsar88 dans le forum Spring
    Réponses: 1
    Dernier message: 05/12/2012, 15h39
  2. [2008] Problème de connexion avec une Named Query
    Par Adorien dans le forum SSAS
    Réponses: 0
    Dernier message: 31/05/2011, 14h44
  3. erreur named query
    Par nessing dans le forum JPA
    Réponses: 9
    Dernier message: 04/04/2011, 18h49
  4. Réponses: 3
    Dernier message: 28/05/2008, 20h28
  5. [EJB3 Entity] Partage d'ejb entity entres applications, named queries
    Par kristof_machin dans le forum Java EE
    Réponses: 3
    Dernier message: 22/01/2008, 11h04

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