我有一个像这样的休眠实体类型
@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
的解决方案那样遍历整个表。