salut,
j'ai 2 tables: user et role, chaque user possede un et un seul role, comment pourai je remplir une liste avec les users et leur role?
salut,
j'ai 2 tables: user et role, chaque user possede un et un seul role, comment pourai je remplir une liste avec les users et leur role?
Si chaque User possède un et un seul Role, il faut mapper cette relation dans User de type many-to-one. Ensuite, tu pourras extraire le rôle d'un User directement en appelant le getter getRole(). Donc la liste finale sera une liste de User, chaqu'un connaissant son role.
dans la classe user j'ai mis ça:
.....
private Integer idRole;
public Integer getIdRole() {
return idRole;
}
public void setIdRole(Integer idRole) {
this.idRole = idRole;
}
....
et dans le fichier user.hbm.xml j'ai mis ça:
.....
<many-to-one name="idRole" class="cri.webssh.domain.model.Role" not-null="false" column="idRole"/>
et dans la classe userDAOImpl j'ai mis ça:
List<User> U=this.getHibernateTemplate().find("FROM User");
ms lorske je veux afficher le idRole dans mon displaytag je recois cette erreur:
org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of cri.webssh.domain.model.User.idRole
vous avez une idée svp?
merci
Il ne faut pas mettre l'id du rôle, mais l'objet role entier
je dois donc ajouter l'objet Role dans la classe User comme ça:
private Role role=null;
avec:
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
mais comment afficher le role dans mn displaytag a partir de cet objet role?
Je fait parti de ceux qui n'ont jamais essayé le display:tag, mais je tenterai bien un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <display:table name="maListeDeUser"> <display:column property="nomUtilisateur" /> <display:column property="role.libelleRole" /> </display:table>
dans la classe User:
...;
private Role role;
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
dans User.hbm.xml:
...
<many-to-one name="role" class="cri.webssh.domain.model.Role"
fetch="join" not-null="false" column="idRole" cascade="none" />
dans la classe UserDAOImpl:
...
public List<User> getUsersList()throws DataAccessException,java.sql.SQLException{
this.getSession().setFlushMode(FlushMode.AUTO);
List<User> U=this.getHibernateTemplate().find("FROM User u left join fetch u.role");
return U;
}
et dans le displaytag (comme tu a proposé):
<display:column property="role.role" />
merci djsnipe
@+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager