2016-03-31 5 views
0

У меня есть класс продукта с полями ID, имя, цены и т.д., ...Ebean Выберите только конкретный столбец

я хочу, чтобы принести только имя из таблицы ..

Am в настоящее время с помощью этого запроса

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

что является alerternate способ найти с помощью списка, но выборка только имя

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

я не т Хинк следующий запрос является эффективным, поскольку он извлекает все данные и возвращает ваты процеживают его

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

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


return list; 

ответ

1

По умолчанию .select("name") автоматически включает столбец Id. Таким образом, в SQL вы увидите «select t0.id, t0.name from ...»

Если вы добавите setDistinct(true) к запросу, то это означает, что Ebean не включает столбец идентификатора, и вы увидите в SQL 'select distinct t0.name от ...

Попробуйте

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

+0

Спасибо за ответ .. Но он возвращает все столбцы –

+0

Какую версию Ebean вы используете? –

+0

он должен быть 3.3.4, так как я использую play framework 2.3.x –