过滤数据库记录的可选列

Optional columns to filter dataBase records

我应该如何使用 Ebean 的 finder 创建一个带有可选列的查询来过滤一些数据?

我想得到一个 List<User> 例如。假设我有 3 列要过滤:按名称、按流派和其他内容。如果我 select 流派,查询应该列出流派 selected 的所有记录,之后,如果我 select name John 和 genre male,查询应该列出所有 "John" 谁是 "male" 等等。

我知道创建简单查询来查找列:

find.where().eq("ex1",var1).eq("ex2", var2).findList();

有什么建议吗?

尝试使用 ExpressionList。这是示例,如果 if statement 中的条件满足,则表达式将包含在 where 子句中。

public static List<User> filterUsers(int user_no, String genre, String name){

    com.avaje.ebean.ExpressionList expressionList = find.where().eq("user_no", user_no);

    if(condition1)
        expressionList.eq("genre", genre);

    if(condition2)
        expressionList.eq("name", name);

    return expressionList.findList();

}