Ebean Select 仅特定列

Ebean Select only particular Column

我有一个 class 产品,其中包含字段 id 、 name 、 price 等,...

我只想从 table ..

中获取名称

我目前正在使用这个查询

 String sql =   "select name from product where price = 100";
 SqlQuery sqlQuery = Ebean.createSqlQuery(sql);
  List<SqlRow> list = sqlQuery.findList();

使用 List 查找但仅获取名称的替代方法是什么

List<product> list = product.find.where("price = 100").select("name").findList();

我认为以下查询效率不高,因为它获取所有数据并且returns我们过滤它

  List<String> list = new ArrayList<String>();

    for(product p: product.find.select("name").findList())
     {
        list.add(p.name);
    }


return list;

默认情况下 .select("name") 自动包含 Id 列。所以在 SQL 你会看到 select t0.id, t0.name from ...

如果您将 setDistinct(true) 添加到查询中,那么这会告诉 Ebean 不包括 Id 列,您将在 SQL select distinct t0.name from ...

中看到

尝试

product.find .where().eq("price", 100) .setDistinct(true).select("name") .findList();

Ebean 有 findSingleAttributeList()findSingleAtrribute() 所以备选答案是:

List<String> productNames =
  product.find
    .where().eq("price", 100)
    .select("name")
    .findSingleAttributeList();