我有多品牌申请 单个用户可以拥有多个品牌,应用程序中的几乎每个查询都会通过其品牌限制用户。
用户拥有带商标的ManyToMany。
例如,我想从数据库中提取List<Employee>
。
s.createQuery("FROM User user INNER JOIN user.brands brands WHERE brands IN(1,2)");//(1,2) = :brands
在这种情况下,我会多次获得同一个用户,因为用户有多个品牌连接到他。
如何在不影响我的结果的情况下查询品牌而不需要明确的?
这是用户实体:
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
}
由于
答案 0 :(得分:4)
将 DISTINCT 关键字添加到您的查询中(在 SELECT 关键字之后,必须同时添加):
s.createQuery("SELECT DISTINCT user FROM User user INNER JOIN user.brands brands WHERE brands IN(1,2)");