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

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


我想创建一个函数,如果Type表中的任何行已启用= 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;


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

10-07 12:56