Критерии гибернации / критерий с ограничениями равен ненулевым значениям POJO

1

У меня есть POJO, как это

public class Employee
{
  private String name;
  private int age;

  // setters and getters
}

Могу ли я использовать 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 (s), который соответствует непустым свойствам POJO.

Я использую hibernate 4.3.8

Теги:
hibernate
pojo
criteria

2 ответа

0

Критерий примера Hibernate можно использовать для этого

Criteria criteria = session.createCriteria(Employee.class)
        .add(Example.create(employeeObjWithFewFieldsSet)
             .setPropertySelector(Example.NotNullPropertySelector.INSTANCE));
criteria.list();

Выше запрос широко известен как "Hibernate Query By Example (QBE)"

Опасайтесь, я не тестировал это (поскольку я больше не требую). Но обновится здесь, если я это сделаю.

0

вы можете сделать это с помощью API отображения java, как это

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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню