@Test
public void test3() {
Specification<Users> spec = new Specification<Users>() {
@Override
public Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
return cb.or(cb.equal(root.get("username"), "王五"),cb.equal(root.get("userage"),25),cb.and(cb.equal(root.get("userid"), 3)));
}
};
List<Users> list = this.usersDao.findAll(spec);
for (Users users : list) {
System.out.println(users);
}
}
结果
Hibernate: select users0_.userid as userid1_0_, users0_.userage as userage2_0_, users0_.username as username3_0_ from t_users users0_ where users0_.username=? or users0_.userage=25 or users0_.userid=3
Users [userid=1, username=王五, userage=22]
Users [userid=3, username=王五, userage=22]
Users [userid=19, username=王小虎, userage=25]
老师,这和你说的不一样啊,and以后出来的结果还是or