Bonjour,
J'essaie de faire une requete afin de récupérer une listes de mes entité mais je n'y arrive toujours pas. En fait j'ait deux entité ( Entity ) : Brochure et HistoBrohure. HistoBrohure peut contenir plusieurs lignes de brochures pour simplifier ( Many To One de HistoBrochure vers Brochure ). J'utilise la base de données Mysql 5.1 et Hibernate 3.2.0.ga.
Voici le code des mes entités, j'ai supprimé certains attributes pour simplifier les classes :
L'idée est de récuperer une liste d'objets Brochure avec toutes les 3 propriétés id, auteur et surtout statutId (Transient). J'ai essayé avec la classe Criteria mais je n'ai pas réussi. J'essaie de la faire marcher avec HQL mais je bute encore à des erreurs.
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 @Entity @Table(name="BROCHURE") public class Brochure { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name="ID_BROCHURE") private Long id; @Column(name="AUTEUR", length=50) private String auteur; @Transient private Integer statutId; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getAuteur() { return auteur; } public void setAuteur(String auteur) { this.auteur = auteur; } public Integer getStatutId() { return statutId; } public void setStatutId(Integer statutId) { this.statutId = statutId; } } @Table(name="HISTO_BROCHURE") public class HistoBrochure { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="ID_HISTO_BROCHURE") private Long id; @ManyToOne @JoinColumn(name="ID_BROCHURE") private Brochure brochure; @Column(name="ID_STATUT") private short idStatut; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Brochure getBrochure() { return brochure; } public void setBrochure(Brochure brochure) { this.brochure = brochure; } public short getIdStatut() { return idStatut; } public void setIdStatut(short idStatut) { this.idStatut = idStatut; } }
Voici ce que j'ai écris dans ma classe DAO :
Seulement à l'exécution de code, j'ai l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String SQL= "SELECT B.ID_BROCHURE, H.ID_STATUT , B.AUTEUR FROM OCC_TREF_BROCHURE B INNER JOIN OCC_TREF_HISTO_BROCHURE H ON B.ID_BROCHURE =H.ID_BROCHURE"; List<Brochure> brochuresList = (List<Brochure>) session.createSQLQuery(SQL).setResultTransformer(Transformers.aliasToBean(Brochure.class)).list();
Je comprends que Hibernate considère les noms de colonnes comme nom de propriétés. C'est pour cela qu'il cherche les setters afin de renseigner les attributs de mon objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 15:01:15,384 ERROR [STDERR] org.hibernate.PropertyNotFoundException: Could not find setter for LIBC_BROCHURE on class fr.si2m.occ.dao.model.Brochure at org.hibernate.property.ChainedPropertyAccessor.getSetter(ChainedPropertyAccessor.java:44) at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:57) at org.hibernate.hql.HolderInstantiator.instantiate(HolderInstantiator.java:69) at org.hibernate.loader.custom.CustomLoader.getResultList(CustomLoader.java:330) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2028) at org.hibernate.loader.Loader.list(Loader.java:2023) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289) at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695) at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142) at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:150) at fr.si2m.occ.dao.impl.BrochureDAOImpl.getBrochures(BrochureDAOImpl.java:106) at fr.si2m.occ.web.actions.json.SearchBrochuresAction.execute(SearchBrochuresAction.java:77)
Ma question est de savoir comment spécifier à Hibernate la correspondance entre noms des colonnes de la table et noms des attributs de mon Objet Brochure ?
Merci pour votre aide.
Partager