在一个交叉点

时间:2018-02-21 15:51:07

标签: java hibernate criteria hibernate-criteria

我根据来自过滤器的条件填充了一个交叉点:

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

最后将结点添加到我的标准:

criteria.add(conjunction);

只有当联合中的标准总数> 1时,我才会将某些别名应用于我的标准对象。 0(优化查询):

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

我如何知道交界处的标准总数?

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

1 个答案:

答案 0 :(得分:1)

Afaik(根据文档),没有办法从连词中获得标准数量。

可能会做那样的事情

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

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