У меня есть класс Java, поле которого помечено @SearchCriteria(criteria = "class1.class2.field")
. criteria
параметр внутри аннотации означает, что для класса это поле должно быть установлено в качестве критерия гибернации, это означает, что если поле помечено, например:
@SearchCriteria(criteria = "class1.class2.field")
private String value;
Я хочу динамически создавать критерии гибернации с помощью вида
.
DetachedCriteria hibernateCriteria = forClass(Class.class);
hibernateCriteria.createCriteria("class1").createCriteria("class2").add(eq("field", value));
Проблема в том, что я не могу установить другой критерий для уже добавленного, это означает, что я должен проверить аннотацию criteria
опция.
switch (annotationCriteria.length - 1) {
case 0:
hibernateCriteria.add(isNull(annotationCriteria[0]));
case 1:
hibernateCriteria.createCriteria(annotationCriteria[0]).add( Restrictions.isNull(annotationCriteria[annotationCriteria.length - 1]));
case 2: hibernateCriteria.createCriteria(annotationCriteria[0]).createCriteria(annotationCriteria[1]).add( Restrictions.isNull(annotationCriteria[annotationCriteria.length - 1]));
}
Я хочу удалить этого "свита". Можно получить уже добавленные критерии, я не делаю сейчас, например, по «имени», и это добавляет новые подкритерии для него.