Bonjour à tous,
dans mon schèma SQL, j'ai une association porteuse entre 2 entités.
une fois le schèma généré via JPA Tools dans Eclipse, voici les 3 tables que j'obtiens.
table poste
table competence
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 package model.dto; import static javax.persistence.GenerationType.IDENTITY; import java.util.List; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(schema="developpement", name="postes") public class Poste implements Model { @Id @GeneratedValue(strategy=IDENTITY) private int id; private String matricule; private String description; @OneToMany(mappedBy="poste") private Set<Occuper> occuperCollection; @OneToMany(mappedBy="poste") private List<Qualifier> qualifierCollection; @ManyToOne private Metier metier; private static final long serialVersionUID = 1L; public Poste() { super(); } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String getMatricule() { return this.matricule; } public void setMatricule(String matricule) { this.matricule = matricule; } public String getDescription() { return this.description; } public void setDescription(String description) { this.description = description; } public Set<Occuper> getOccuperCollection() { return this.occuperCollection; } public void setOccuperCollection(Set<Occuper> occuperCollection) { this.occuperCollection = occuperCollection; } public List<Qualifier> getQualifierCollection() { return this.qualifierCollection; } public void setQualifierCollection(List<Qualifier> qualifierCollection) { this.qualifierCollection = qualifierCollection; } @Override public Model create() { return new Poste(); } @Override public boolean equals(Object obj) { if (obj instanceof Poste) return (this.getId() == ((Poste) obj).getId()); return false; } @Override public int hashCode() { return this.getId(); } @Override public String toString() { return matricule; } public Metier getMetier() { return this.metier; } public void setMetier(Metier metier) { this.metier = metier; } }
et enfin la table qualifier :
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 package model.dto; import static javax.persistence.GenerationType.IDENTITY; import java.util.List; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(schema="developpement", name="Competences") public class Competence implements Model { @Id @GeneratedValue(strategy=IDENTITY) private int id; private String description; private String libelle; @OneToMany(mappedBy="competence") private Set<Disposer> disposerCollection; @OneToMany(mappedBy="competence") private List<Qualifier> qualifierCollection; @OneToMany(mappedBy="competence") private Set<Valoriser> valoriserCollection; private static final long serialVersionUID = 1L; public Competence() { super(); } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String getDescription() { return this.description; } public void setDescription(String description) { this.description = description; } public String getLibelle() { return this.libelle; } public void setLibelle(String libelle) { this.libelle = libelle; } public Set<Disposer> getDisposerCollection() { return this.disposerCollection; } public void setDisposerCollection(Set<Disposer> disposerCollection) { this.disposerCollection = disposerCollection; } public List<Qualifier> getQualifierCollection() { return this.qualifierCollection; } public void setQualifierCollection(List<Qualifier> qualifierCollection) { this.qualifierCollection = qualifierCollection; } public Set<Valoriser> getValoriserCollection() { return this.valoriserCollection; } public void setValoriserCollection(Set<Valoriser> valoriserCollection) { this.valoriserCollection = valoriserCollection; } public Model create() { return new Competence(); } @Override public boolean equals(Object obj) { if (obj instanceof Competence) return (this.getId() == ((Competence) obj).getId()); return false; } @Override public int hashCode() { return this.getId(); } @Override public String toString() { return libelle; } }
j'ai 3 managed beans (1 pour chaque table). Toute modification sur competence et poste fonctionne (insert, update, delete, select)
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 package model.dto; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(schema="developpement") public class Qualifier implements Model { @EmbeddedId private QualifierPK pk; private int niveau; @ManyToOne private Competence competence; @ManyToOne private Poste poste; private static final long serialVersionUID = 1L; public Qualifier() { super(); } public QualifierPK getPk() { return this.pk; } public void setPk(QualifierPK pk) { this.pk = pk; } public int getNiveau() { return this.niveau; } public void setNiveau(int niveau) { this.niveau = niveau; } public Competence getCompetence() { return this.competence; } public void setCompetence(Competence competence) { this.competence = competence; this.pk.setCompetenceId(competence.getId()); } public Poste getPoste() { return this.poste; } public void setPoste(Poste poste) { this.poste = poste; this.pk.setPosteId(poste.getId()); } @Override public Model create() { return new Qualifier(); } @Override public int getId() { return this.pk.hashCode(); } @Override public String toString() { return String.valueOf(niveau); } }
mais quand je tente d'insérer une qualification, voici le message d'erreur que j'obtiens :
le message est clair mais pourquoi écrit-il qualifier0_.competenceid vu que cela devrait être qualifier0_.competence_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
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 org.postgresql.util.PSQLException: ERREUR: La colonne qualifier0_.competenceid n'existe pas org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592) org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327) org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192) org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451) org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350) org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254) org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) org.hibernate.loader.Loader.getResultSet(Loader.java:1787) org.hibernate.loader.Loader.doQuery(Loader.java:674) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) org.hibernate.loader.Loader.doList(Loader.java:2213) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) org.hibernate.loader.Loader.list(Loader.java:2099) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378) org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338) org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:65) model.dao.DaoModel.getAll(DaoModel.java:48) controller.HandlerModel.getObjects(HandlerModel.java:70) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) javax.el.BeanELResolver.getValue(BeanELResolver.java:62) javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72) org.apache.el.parser.AstValue.getValue(AstValue.java:97) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101) javax.faces.component.UIData.getValue(UIData.java:609) javax.faces.component.UIData.getDataModel(UIData.java:1124) javax.faces.component.UIData.setRowIndex(UIData.java:451) com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:77) javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:813) javax.faces.component.UIData.encodeBegin(UIData.java:962) javax.faces.component.UIComponent.encodeAll(UIComponent.java:934) javax.faces.render.Renderer.encodeChildren(Renderer.java:148) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) javax.faces.component.UIComponent.encodeAll(UIComponent.java:936) javax.faces.render.Renderer.encodeChildren(Renderer.java:148) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) javax.faces.component.UIComponent.encodeAll(UIComponent.java:936) javax.faces.component.UIComponent.encodeAll(UIComponent.java:942) com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:271) com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:202) org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108) org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189) com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147) org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:276) org.ajax4jsf.Filter.doFilter(Filter.java:175)
merci sincèrement à ceux qui s'auront m'apporter de l'aide !
Partager