[英]Hibernate like query on Many-to-Many collection
我有映射到user_roles
User
实体。 我想根据User.id
和roles.name
筛选这些角色
与此SQL查询一样
SELECT ur
FROM user
JOIN user_roles ur
ON ur.user_id = user.id
WHERE user.id = 1
AND ur.name like '%admin%';
如何在休眠状态下实现此SQL查询? 如何将参数传递给角色名称?
User.java
@Entity
class User {
@ManyToMany
@JoinTable(name="user_roles",
joinColumns=@JoinColumn(
name="user_id", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(
name="role_id", referencedColumnName="id")
)
public Set<Role> getRoles() {
return roles;
}
}
希望对你有帮助
select "your_req" from User us join usr.role usr where usr.name like '%admin%' and us.id=1
HQL完全支持您想要的内容,您可以创建一个HQL查询,然后将参数传递给它。 以下代码块可能是参考:
Long userId = 1L;
String roleNamePattern = "%admin%";
Query query = session.createQuery("SELECT role FROM User user JOIN user.roles role WHERE user.id = :userid AND role.name LIKE :rolename");
query.setLong("userid", userId);
query.setString("rolename", roleNamePattern);
List<Role> roles = query.list();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.