强制ebean不在生成的查询中包含ID

时间:2014-07-03 11:51:35

标签: java ebean

我正在构建一个必须从表中获取所有不同值的选择。

我通常会写的sql会是这样的: "SELECT DISTINCT ARTIST FROM MUSICLIB"

但是,ebean正在生成以下内容: "SELECT DISTINCT ID, ARTIST FROM MUSICLIB"

取景器是这样的:

find.select("artist").setDistinct(true).findList();

我发现无论我设置什么选项,ebean都会在每个查询中生成此ID。

我如何完成我正在寻找的目标?

1 个答案:

答案 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列表执行其他查询。