我有一个使用hibernate的@ElementCollection字段的实体,例如:
@ElementCollection(fetch = FetchType.EAGER)
@Column(name="years")
private Set<Integer> years = new HashSet<>();
其中年份是一组年份,我只想过滤那些年份中包含特定queryYear的记录。
我可以在Hibernate中使用哪种限制条件作为Restriction.in不起作用反之亦然
答案 0 :(得分:0)
您无法在一个条件中执行此操作,因为如果不使用某些语法(如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。