我根据来自过滤器的条件填充联结:

if (filter.getName() != null) conjunction.add(...);
if (filter.getSurname() != null) conjunction.add(...);


最后,将结点添加到我的条件中:

criteria.add(conjunction);


我只想将某些别名应用于条件对象,前提是连接中条件的总数大于0(以优化查询):

if (moreThanOneCriterion(conjunction)) {
    criteria.createCriteria("users", "user");
    criteria.add(conjunction);
}


我怎么知道路口的标准总数?

作为一种选择,可以在每个if块内添加一个计数器变量,但要寻找更好/更清洁的选项。

最佳答案

Afaik(根据文档)没有方法可以从合取中获取标准数量。

大概可以做这样的事情

boolean moreThanOneCriterion= false;
if (filter.getName() != null) { conjunction.add(...); moreThanOneCriterion=true; }
if (filter.getSurname() != null) { conjunction.add(...); moreThanOneCriterion=true; }


如果moreThanOneCriteriontrue并添加别名(因为您似乎对标准的确切计数并不真正感兴趣)

09-27 20:20