如何创建一个在一列中搜索任何值 = true 的休眠投影

how to create a hibernate projection that searches one column for any value = true

我有一个像这样的休眠实体类型

@Entity
@Table(name = "type")
public class Type {
  @Column(name = "enabled")
  private boolean enabled = false;
}

并且我想创建一个 returns 如果类型 table 中的任何行已启用 = true 的函数。我想通过使用投影或标准尽可能高效,但我不知道从哪里开始

也许最有效的方法是搜索具有 enabled = true 的第一行,并检查它是否存在。

Criteria crit = session.createCriteria(Type.class);
crit.setProjection(Projections.id());
crit.add(Restrictions.eq("enabled", true));
crit.setMaxResults(1);
boolean anyIsEnabled = crit.uniqueResult() != null;

查询应该 return 结果 when/if 它遇到第一个结果 enabled = true,所以它不必像解决方案那样遍历整个 table例如,使用 count,则必须。