我正在构建一个必须从表中获取所有不同值的选择。
我通常会写的sql会是这样的: "SELECT DISTINCT ARTIST FROM MUSICLIB"
但是,ebean正在生成以下内容: "SELECT DISTINCT ID, ARTIST FROM MUSICLIB"
取景器是这样的:
find.select("artist").setDistinct(true).findList();
我发现无论我设置什么选项,ebean都会在每个查询中生成此ID。
我如何完成我正在寻找的目标?
答案 0 :(得分:1)
你不能这样做,Ebean for objects mapping需要ID字段,如果你不包含它,你会得到一些神秘的例外。
相反,您可以在没有映射的情况下查询数据库,然后自己编写SQL语句:
SqlQuery sqlQuery = Ebean.createSqlQuery("SELECT DISTINCT artist FROM musiclib");
List<SqlRow> rows = sqlQuery.findList();
for (SqlRow row : rows) {
debug("I got one: " + row.getString("artist"));
}
当然,如果artist
是关系,则需要使用in(...)
表达式找到的ID列表执行其他查询。