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.

Reply via email to