从三个表Hibernate中获取部分对象

时间:2015-03-21 09:37:34

标签: java hibernate hql

我有三个表User,UserRole(Join table)和Role。从角色表我需要在条件基础上获取名称。我有sql查询正在处理这种情况,但想尝试使用标准。

Select firstname, lastname from user, userrole, role where user.id=userrole.userid and userrole.roleid=role.id and role.name='James';

这将返回部分对象firstname和lastname,稍后我可以使用它作为fullname。

我如何使用HQL或Criteria做同样的事情?任何人都可以帮助我吗?

在我的用户实体

@ManyToMany(fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)    
@JoinTable(
        name = "userrole",
        joinColumns = { @JoinColumn(name = "userid") },
        inverseJoinColumns = @JoinColumn(name = "roleid")
)
public Set<Role> getRoles() {
    return roles;
}

1 个答案:

答案 0 :(得分:0)

使用下面给出的代码。

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from user user where user.name=:username").setParameter("username", "James");
List<User> list = query.list();