Ebean仅选择特定列

时间:2016-03-31 10:57:56

标签: playframework ebean

我有一个包含字段ID,名称,价格等的类产品......

我想从表中只获取名称..

目前正在使用此查询

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

使用List查找但仅获取名称

的alerternate方法是什么
List<product> list = product.find.where("price = 100").select("name").findList();

我不认为以下查询是有效的,因为它获取所有数据并返回wat我们过滤它

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

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


return list;

2 个答案:

答案 0 :(得分:2)

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

如果您向查询添加setDistinct(true),那么告诉Ebean不包含Id列,您将在SQL中看到'从...中选择不同的t0.name'

尝试

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

答案 1 :(得分:1)

Ebean有findSingleAttributeList()findSingleAtrribute(),因此替代答案是:

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