我如何检查参数是否为空?根据我想要添加或不添加限制的结果
如果person.getLastName()== null我不想添加相关限制,我该怎么做?
persons = session.createCriteria(PersonEntity.class).add(
Restrictions.eq("LastName", person.getLastName())).add(
Restrictions.eq("FirstName", person.getFirstName())).add(
Restrictions.eq("email", person.getUser().getEmail()))
.list();
Run Code Online (Sandbox Code Playgroud)
谢谢,tania
Ale*_*øld 12
你可以在方法中使用普通if来做:
private void addRestrictionIfNotNull(Criteria criteria, String propertyName, Object value) {
if (value != null) {
criteria.add(Restrictions.eq(propertyName, value));
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用它:
Criteria criteria = session.createCriteria(PersonEntity.class);
addRestrictionIfNotNull(critera, "LastName", person.getLastName());
addRestrictionIfNotNull(critera, "FirstName", person.getFirstName());
addRestrictionIfNotNull(critera, "email", person.getEmail());
persons = criteria.list();
Run Code Online (Sandbox Code Playgroud)
您可以使用这种复杂的限制:
Restrictions.or(Restrictions.and(Restrictions.isNotNull("propName"), Restrictions.eq("propName", propValue)), Restrictions.isNull("propName"));
Run Code Online (Sandbox Code Playgroud)
如果我理解你是正确的,它会做你期望的.
内部限制的结果Restrictions.eq("propName",propValue)仅在指定的属性不为null时才会影响查询的结果.
PS.我知道它看起来太混淆但是现在我无法想象另一种方法.