如何创建一个hibernate投影,在一列中搜索任何值= true

时间:2015-04-09 16:02:33

标签: java hibernate criteria hibernate-criteria

我有一个像这样的hibernate实体

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

我想创建一个函数,如果Type表中的任何行有enabled = true,则返回该函数。我希望通过使用投影或标准尽可能高效,但我不知道从哪里开始

1 个答案:

答案 0 :(得分:1)

执行此操作的最有效方法可能是搜索具有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;

当/遇到enabled = true的第一个结果时,查询应返回结果,因此它不必像使用count的解决方案那样遍历整个表格,例如,到。