Bonjour à tous, j'utilise hibernate depuis peu de temps pour réaliser un programme de gestion d'élèves/classes/cours. Cela fait plusieurs jours que je suis coincé avec un problème de recherche et je n'est trouvé aucune solution.
Mon but est de réaliser une recherche permettant de trouver tout les élèves faisant partie des classes (pas classes java mais classes d'école) dont ces dernières doivent posséder un ou plusieurs cours particuliers spécifié par l'utilisateur (donc précisé par leur ids):
Voici ma classe PojoBase (les 3 classes Eleve,Cours et Classe héritent de cette classe qui elle contient l'id):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class Eleve extends Personne{ // personne herite de PojoBase @ManyToOne private Classe classe; } public class Classe extends PojoBase { @OneToMany(mappedBy="classe") private Set<Eleve> eleves = new HashSet<Eleve>(); @OneToMany(mappedBy="classe") private Set<Cours> cours = new HashSet<Cours>(); } public class Cours extends PojoBase { @ManyToOne private Classe classe; }
J'ai tenté une recherche avec la classe Restriction comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class PojoBase { @Id @GeneratedValue(strategy = GenerationType.TABLE) @Column private long id = 0; }
Je me retrouve avec une exception, car je pense que, le Restrictions.like est à utiliser sur des types primitif et ne comprend surement pas que je souhaite qu'il me trouve toutes les entités de type Classe qui contiennent au moins le cours id_cours.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Criteria criteria = session.createCriteria(Eleve.class); // on souhaite obtenir une liste d'élèves criteria.createAlias("classe","alias_classe"); // en regardant leurs classe (d'école) long id_cours = 1; // id du cours qu'on connait dont les élèves doivent participer via leur classe (d'école) crit.add(Restrictions.like("alias_classe.cours",id_cours)); // org.hibernate.exception.SQLGrammarException: could not extract ResultSet, java.sql.SQLException: No value specified for parameter 1
Comme je suis en pleine découvert d'hibernate, n'hésitez pas à me le dire si j'ai fait n'importe quoi
Partager