我有一个像这样的POJO
public class Employee
{
private String name;
private int age;
// setters and getters
}
我可以使用 Criteria API 来检查 POJO 的非空值是否相等
Employee emp = new Employee();
emp.setName("Xyz");
session.createCriteria(Employee.class).add(
Restrictions.nonNullPropertiesEqual(emp) /* Imaginary method */);
而不是
session.createCriteria(Employee.class).add(
Restrictions.eq("name", "Xyz"));
这样我就可以接受 POJO 作为方法参数并返回与 POJO 的非 null 属性匹配的 POJO。
我使用的是 hibernate 4.3.8
最佳答案
你可以使用这样的java反射API来做到这一点
import java.lang.reflect.Field;
private void nonNullPropertiesEqual(Object obj){
Criteria cr = session.createCriteria(obj.getClass());
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
cr.add(Restrictions.isNotNull(field.getName()));
}
}
然后你可以用任何 POJO 来调用这个方法
Employee emp = new Employee();
nonNullPropertiesEqual(emp);
这将对非 NULL 属性施加限制。
关于java - Hibernate Criteria/Criterion with Restrictions 等于 POJO 的非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29160376/