У меня есть приложение для поиска, где многие условия объединены в список «и» или «.Как динамически включать выражения в запросы Ebean?
На основании ввода пользователем некоторые из них могут быть пустыми, эти значения не должны учитываться, если они являются нулевыми.
пример:
public static PagedList<Profile> exampleForSO(String param1, String params2, Integer number, Double d, Boolean condition1, Boolean condition2) {
return find.where().ieq("param1", param1).
ieq("param2", params2).
eq("number", number).
// based on the fact if condition1 is null include an eq("condition", condition1); block
// based on the fact if condition2 is null include an eq("condition", condition1); block
// if param1.equals("test") create an expression .eq("param1", param1).
findPagedList();
}
Я мог бы решить, что с несколькими, если либо еще блоков и возвращать результат на основе этого критерия, но существует более 12 различных условий и, следовательно, надежный способ, чтобы просто исключить их, если они являются нулевыми, было бы потрясающе.
Я мог бы также создать много разных методов, но должен быть какой-то более умный способ.
Также условия не должны быть пустым, но может иметь некоторые специфические ценности, что делает их устаревшими в запросе, например:
params1.equals("something");
Не включать, потому что «что-то» не будет измените результат поиска в любом случае.
любые предложения?
Посмотрите на это [сообщение] (http://stackoverflow.com/questions/31534272/optional-columns-to-filter-database-records /) – Sivakumar
@ Сивакумар, спасибо, это то, что я ищу. –