On Mon, May 12, 2008 at 6:23 AM, Greenhorn2005 <[EMAIL PROTECTED]>
wrote:
>
> Hello to all appfuse users,
>
> I have a doubt.
>
> I have a created two entities called User and Role. A user can have many
> roles and a role can have many users.
>
>
> User.java
>
> code:
>
>
> @Entity
> @Table(name="app_user")
> public class User {
>
> .....
> private Set<Role> roles = new HashSet<Role>();
> .......
>
> @ManyToMany(fetch = FetchType.EAGER, targetEntity=Role.class, cascade =
> CascadeType.ALL)
> @JoinTable(
> name="user_role",
> joinColumns = {
> @JoinColumn(name = "username", referencedColumnName
> = "username")
> },
> inverseJoinColumns = {
> @JoinColumn(name = "role_name",
> referencedColumnName = "name")
> }
> )
> public Set<Role> getRoles() {
> return roles;
> }
> ......
> ......
> .......
> }
>
>
>
>
>
>
>
> Role.java
>
> code:
>
>
> @Entity
> @Table(name="role")
> public class Role{
>
> .....
> private Set<User> users;
> ..
> ...
> @ManyToMany(mappedBy="roles", targetEntity=User.class)
> public Set<User> getUsers() {
> return users;
> }
>
> ....
> .........
> ......
> }
>
>
>
>
> Now I got three tables. ie app_user (User) table, role table and user_role
> table.
>
> code:
>
>
>
> mysql> select * from user_role;
> +--------------+------------+
> | username | role_name |
> +--------------+------------+
> | apple | admin |
> | orange | groupAdmin |
> | pineapple | user |
> | peach | user |
> +...........................+
>
>
>
>
>
> Now, we know that the user_role does not have entity class (model). When I
> write in my DAOHibernate, I want to get access to this user_role table in
> order to get a list of username having role as 'user'. How can I write it
> in
> my code....
>
> code:
>
>
> public class UserDaoHibernate extends GenericDaoHibernate<User, Long>
> implements UserDao {
>
> public UserDaoHibernate() {
> super(User.class);
> }
>
> // public List<User> listUsers() {
> //
> // Query q = getSession().createQuery(" from User as u, Role as
> r, // user_role as ur "
> // + " where ur.username=u.username "
> // + " and ur.role_name = 'user'";
> //
> //
> // here I can not use 'user_role' as it will show errors.
> //
> // return q;
> // }
>
> }
>
>
>
> I hope I made my doubt clear to you all. So Please help . Thank you.
>
> GreenHorn
>
> If you download Appfuse full source, you can see exactly how to do this.
It's all there in the code.