2017-10-10 45 views
0

匹配我有一个实体使用Hibernate如@ElementCollection场:Hibernate的限制标准从集合属性

@ElementCollection(fetch = FetchType.EAGER) 
@Column(name="years") 
private Set<Integer> years = new HashSet<>(); 

,其中年是一组里,我想只能过滤那些包含的记录特定的查询年份。

我可以在Hibernate中使用什么样的限制标准为Restriction.in不不使用某些语法副反之亦然工作

回答

0

你不能在一个标准做到这一点,因为这不能也,在一个标准的查询完成如HAVING,或使用多重连接或其他棘手的解决方法。

最接近的标准是使用Restrictions.in然后使用agregate计数的行数,这样的事情:

c.add(Restrictions.in("years", years)); 
c.setProjection(Projections.projectionList() 
    .add(Projections.groupProperty("id")) 
    .add(Projections.count("id"))); 

所有具有数= years.size结果是你想要的ID。