2017-10-10 71 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。