bonjour,
j'ai une table role(idRole,nomRole) et une table utilisateur(idUser,nom, pre,login,pwd...)
la relation est: 1 role peut etre affecter pour * utilisateur
j'ai utilisée les annotations pour faire le mapping est j'ai eur l'erreur suivante:

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
112
113
 
sept. 03, 2014 10:37:35 AM org.apache.catalina.core.AprLifecycleListener init
INFOS: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\sts-3.4.0.RELEASE;;.
sept. 03, 2014 10:37:35 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
AVERTISSEMENT: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Gestion_administratif v 14_08' did not find a matching property.
sept. 03, 2014 10:37:35 AM org.apache.coyote.AbstractProtocol init
INFOS: Initializing ProtocolHandler ["http-bio-8080"]
sept. 03, 2014 10:37:35 AM org.apache.coyote.AbstractProtocol init
INFOS: Initializing ProtocolHandler ["ajp-bio-8009"]
sept. 03, 2014 10:37:35 AM org.apache.catalina.startup.Catalina load
INFOS: Initialization processed in 594 ms
sept. 03, 2014 10:37:35 AM org.apache.catalina.core.StandardService startInternal
INFOS: Démarrage du service Catalina
sept. 03, 2014 10:37:35 AM org.apache.catalina.core.StandardEngine startInternal
INFOS: Starting Servlet Engine: Apache Tomcat/7.0.21
sept. 03, 2014 10:37:36 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFOS: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [1*011] milliseconds.
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jstl/sql_rt is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jsp/jstl/sql is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jstl/core_rt is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/permittedTaglibs is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://jakarta.apache.org/taglibs/standard/scriptfree is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jsp/jstl/xml is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jstl/xml_rt is already defined
sept. 03, 2014 10:37:37 AM org.apache.catalina.startup.TaglibUriRule body
INFOS: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
sept. 03, 2014 10:37:38 AM org.apache.catalina.core.ApplicationContext log
INFOS: Initializing Spring root WebApplicationContext
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
sept. 03, 2014 10:37:41 AM org.apache.catalina.core.StandardContext listenerStart
GRAVE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [application-context.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: rnu.isamm.pfe.model.Role
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1488)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:608)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.AnnotationException: No identifier specified for entity: rnu.isamm.pfe.model.Role
	at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:277)
	at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:224)
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:664)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3448)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3402)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1330)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1729)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1780)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:247)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:373)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:358)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1547)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1485)
	... 19 more
 
sept. 03, 2014 10:37:41 AM com.sun.faces.config.ConfigureListener contextInitialized
INFOS: Initialisation de Mojarra 2.1.7 (SNAPSHOT 20120206) pour le contexte «/Gestion_formation»
sept. 03, 2014 10:37:42 AM com.sun.faces.spi.InjectionProviderFactory createInstance
INFOS: JSF1048 : Présence d’annotations PostConstruct/PreDestroy  Les méthodes de beans gérés marquées avec ces annotations auront des annotations dites traitées.
sept. 03, 2014 10:37:44 AM org.primefaces.webapp.PostConstructApplicationEventListener processEvent
INFOS: Running on PrimeFaces 3.4.2
sept. 03, 2014 10:37:44 AM org.primefaces.extensions.application.PostConstructApplicationEventListener processEvent
INFOS: Running on PrimeFaces Extensions 0.7.1
sept. 03, 2014 10:37:44 AM org.apache.catalina.core.StandardContext startInternal
GRAVE: Error listenerStart
sept. 03, 2014 10:37:44 AM org.apache.catalina.core.StandardContext startInternal
GRAVE: Erreur de démarrage du contexte [/Gestion_formation] suite aux erreurs précédentes
sept. 03, 2014 10:37:44 AM org.apache.catalina.core.ApplicationContext log
INFOS: Closing Spring root WebApplicationContext
sept. 03, 2014 10:37:44 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
GRAVE: The web application [/Gestion_formation] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
sept. 03, 2014 10:37:45 AM org.apache.coyote.AbstractProtocol start
INFOS: Starting ProtocolHandler ["http-bio-8080"]
sept. 03, 2014 10:37:45 AM org.apache.coyote.AbstractProtocol start
INFOS: Starting ProtocolHandler ["ajp-bio-8009"]
sept. 03, 2014 10:37:45 AM org.apache.catalina.startup.Catalina start
INFOS: Server startup in 9376 ms
j'ai suivi des tutoriel et j'ai constaté qu'il faut utilsée l'annotation @Embeddable and @EmbeddedId d'ou jai ajouter la table roleName et voila le code des 3 table

table Role.java
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
package rnu.isamm.pfe.model;
 
import java.util.HashSet;
import java.util.Set;
 
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Embeddable;
import javax.persistence.Embedded;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
 
import javax.persistence.Column;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
 
import org.hibernate.annotations.Proxy;
@Entity
@Proxy(lazy=false)
@Table(name="Role")
public class Role {
 
	//private int idr;
 
@Embedded
@AttributeOverrides({
    @AttributeOverride(name="idRole", column=@Column(name="idRole")),
    @AttributeOverride(name="nomRole", column=@Column(name="nomRole"))
  })
private RoleName roleName;
 
 
 
 
public RoleName getRoleName() {
	return roleName;
}
 
public void setRoleName(RoleName roleName) {
	this.roleName = roleName;
}
	public Role() {
		super();
		// TODO Auto-generated constructor stub
	}
 
 
 
	@OneToMany(mappedBy="role", cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
	Set<Utilisateur> users=new HashSet<Utilisateur>();
 
 
	public Set<Utilisateur> getUsers() {
		return users;
	}
	public void setUsers(Set<Utilisateur> users) {
		this.users = users;
	}
 
 
 
}
table utilisateur.java
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
package rnu.isamm.pfe.model;
 
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; 
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.JoinColumns;
import org.hibernate.annotations.Proxy;
 
@Entity
@Proxy(lazy=false)
@Table(name="Utilisateur") 
public class Utilisateur {
 
	private int idUser;
	private String nom;
	private String prenom;
	private String mail;
	private String poste;
	private String cin;
	private String login;
	private String pwd; 
 
	private Administrateur administrateur ;
 
 
	@ManyToOne(targetEntity=rnu.isamm.pfe.model.Role.class)
    @JoinColumn(name = "roleName",  unique = false, nullable = false, insertable = false, updatable = false)
	private Role role;
 
 
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)  
	public int getIdUser() {
		return idUser;
	}
	public void setIdUser(int idUser) {
		this.idUser = idUser;
	}
 
 
	public String getNom() {
		return nom;
	}
	public void setNom(String nom) {
		this.nom = nom;
	}
	public String getPrenom() {
		return prenom;
	}
	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}
	public String getMail() {
		return mail;
	}
	public void setMail(String mail) {
		this.mail = mail;
	}
	public String getPoste() {
		return poste;
	}
	public void setPoste(String poste) {
		this.poste = poste;
	}
	public String getCin() {
		return cin;
	}
	public void setCin(String cin) {
		this.cin = cin;
	}
 
 
 
 
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
 
 
	Set<Affectation> ls_affectation=new HashSet<Affectation>();
 
 
	@OneToMany(mappedBy="user" , cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
	public Set<Affectation> getLs_affectation() {
		return ls_affectation;
	}
	public void setLs_affectation(Set<Affectation> ls_affectation) {
		this.ls_affectation = ls_affectation;
	}
 
 
	Set<Formation> formations=new HashSet<Formation>();
 
	@OneToMany(mappedBy="user", cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
	public Set<Formation> getFormations() {
		return formations;
	}
	public void setFormations(Set<Formation> formations) {
		this.formations = formations;
	}
 
	@ManyToOne(targetEntity=rnu.isamm.pfe.model.Administrateur.class)
	@JoinColumn(name="idAdminstrateur", nullable=true)
	public Administrateur getAdministrateur() {
		return administrateur;
	}
	public void setAdministrateur(Administrateur administrateur) {
		this.administrateur = administrateur;
	}
 
 
	public Role getRole() {
		return role;
	}
	public void setRole(Role role) {
		this.role = role;
	}
 
 
 
	public void validateEmail(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException {
		String email=(String)arg2;
		Pattern p=Pattern.compile("[a-z]+[.,-_]*[a-z]*@[a-z]+.[a-z]+");
		Matcher m=p.matcher(email);
		boolean verif=m.matches();
 
		if(!verif){
			//on utilise lorsque on traveille avec une seule languge 
			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,"Email invalid", "mail doit etre sous la forme xxx@xx.xx"));
 
 
		}
 
	}
 
 
 
 
 
}
table RoleName.java
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
package rnu.isamm.pfe.model;
 
import javax.persistence.Embeddable;
import javax.persistence.Id;
import javax.persistence.Column;
@Embeddable
public class RoleName {
 
 
private int idRole;
private String nomRole;
 
 
@Column(name="idRole")
public int getIdRole() {
	return idRole;
}
public void setIdRole(int idRole) {
	this.idRole = idRole;
}
 
 
@Column(name="nomRole")
public String getNomRole() {
	return nomRole;
}
public void setNomRole(String nomRole) {
	this.nomRole = nomRole;
}
public RoleName() {
	super();
	// TODO Auto-generated constructor stub
}
 
 
 
 
}
merci de me corriger