fat*_*zzy 1 java many-to-many hql unique
我有多个品牌的应用程序。
单个用户可以拥有多个品牌,几乎应用程序中的每个查询都通过其品牌来限制用户。
用户有 ManyToMany 和 Brand(s) 。
例如,我想List<Employee>从数据库中提取。
s.createQuery("FROM User user INNER JOIN user.brands brands WHERE brands IN(1,2)");//(1,2) = :brands
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将不止一次获得同一个用户,因为该用户拥有多个与他相关的品牌。
如何在不需要不同的情况下查询品牌而不会影响我的结果?
这是用户实体:
public class User {
@Id
@Column(name="USER_ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer userId;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="USERS_BRANDS" , joinColumns = {@JoinColumn(name="USER_ID")},inverseJoinColumns={@JoinColumn(name="BRAND_ID")})
private Collection<Brand> brands;
...other members
...getters and setters
}
Run Code Online (Sandbox Code Playgroud)
谢谢
将关键字DISTINCT添加到您的查询中(紧跟在必须添加的SELECT关键字之后):
s.createQuery("SELECT DISTINCT user FROM User user INNER JOIN user.brands brands WHERE brands IN(1,2)");
Run Code Online (Sandbox Code Playgroud)