我有一个包含字段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;
答案 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();