Критерий гибернации, который в некоторых случаях совпадает со всем - PullRequest
0 голосов
/ 20 января 2011

возможно ли сделать что-то вроде

criteria.add(Expression.eq("product", " * "))  

, чтобы оно соответствовало всему?

Было бы удобно, если бы вы получили переменную, которая может иметь много значений и специальное значение «все», которое сопоставляется со всем.Таким образом, вы можете вызвать метод, подобный этому, и если переменная имеет значение «all», выражение будет соответствовать всему.и таблица, в которой перечислены записи, основанные на том, какую языковую комбинацию она содержит, с IF STATEMENTS это выглядело бы так: (DynamicQuery является абстракцией для критериев)это было бы еще более отвратительно ... Просто нужно охватить все комбинации, которые могут произойти ... Вот почему я хотел бы иметь что-то вроде REGEX, потому что я бы присвоил переменной значение reqex "*" и добавил бы две строкикак это

dq.add(PropertyFactoryUtil.forName("languageFrom").eq(languageFromVariable));
dq.add(PropertyFactoryUtil.forName("languageTo").eq(languageToVariable));   

1 Ответ

2 голосов
/ 20 января 2011
if (null != variable && !variable.isEmpty()){
    criteria.add(Expression.eq("product", variable)) ;
}

Если он нужен только тогда, когда он выбран.Вы можете добавить оператор if, чтобы критерии добавлялись только при необходимости.

Редактировать 1:

Вы можете определить метод, если собираетесь использовать его не только для полей.Даже вы можете определить различные критерии внутри здесь.Простое обслуживание (как используется всеми и центризовано), повторное использование кода (изменение в одной точке будет эффективно для всех)

addCriteria(Criteria criteria, String name, String value){

 //you wanna handle special cases like null == name as well accordingly

    if (null != value && !value.isEmpty() && null != name && !name.isEmpty()){
        criteria.add(Expression.eq(name, value)) ;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...