一个用户有两个角色的输出
Output of one user with two roles
我有两个实体 User
和 Role
。它们具有单向 ManyToMany
连接。但是当调用用户列表时,由于某种原因,用户多次返回多个角色。
下面我提供了代码和结果。
Result
Дебаг
Code with HQL queries
public List<User> listUsers() {
List resultList = manager.createQuery("SELECT u FROM User u LEFT JOIN FETCH u.roles").getResultList();
return resultList;
}
更新:
我找到了这个解决方案:
public List<User> listUsers() {
List resultList = manager.createQuery("SELECT u FROM User u LEFT JOIN FETCH u.roles")
.unwrap(org.hibernate.Query.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.getResultList();
return resultList;
}
但是criteria API
比较慢,不推荐使用,已经弃用
如何显示一个用户有两个角色???
需要在查询中添加 distinct
语句以避免出现多个条目
public List<User> listUsers() {
List resultList = manager.createQuery("SELECT distinct u FROM User u LEFT JOIN FETCH u.roles").getResultList();
return resultList;
}
我有两个实体 User
和 Role
。它们具有单向 ManyToMany
连接。但是当调用用户列表时,由于某种原因,用户多次返回多个角色。
下面我提供了代码和结果。
Result
Дебаг
Code with HQL queries
public List<User> listUsers() {
List resultList = manager.createQuery("SELECT u FROM User u LEFT JOIN FETCH u.roles").getResultList();
return resultList;
}
更新:
我找到了这个解决方案:
public List<User> listUsers() {
List resultList = manager.createQuery("SELECT u FROM User u LEFT JOIN FETCH u.roles")
.unwrap(org.hibernate.Query.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.getResultList();
return resultList;
}
但是criteria API
比较慢,不推荐使用,已经弃用
如何显示一个用户有两个角色???
需要在查询中添加 distinct
语句以避免出现多个条目
public List<User> listUsers() {
List resultList = manager.createQuery("SELECT distinct u FROM User u LEFT JOIN FETCH u.roles").getResultList();
return resultList;
}