簡體   English   中英

可以從集合屬性中匹配的休眠限制條件

[英]Hibernate Restriction criteria to match from a collection property

我有一個使用冬眠的@ElementCollection字段的實體,例如:

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

其中years是一組年份,我只想過濾包含該組年份中特定queryYear的那些記錄。

我可以在Hibernate中使用哪種限制條件,因為Restriction.in無效,反之亦然

您不能在一個條件中執行此操作,因為如果不使用諸如HAVING語法,或者使用多個聯接或其他棘手的解決方法,也無法在一個常規查詢中完成此操作。

最接近的條件是使用Restrictions.in,然后使用agregate來計算行號,如下所示:

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

所有具有count = years.size的結果就是您想要的ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM