是否可以将SqlQuery结果从Ebean转换为模型(Bean)? [英] Is it possible to cast a SqlQuery results from Ebean to a Model (Bean)?

查看:243
本文介绍了是否可以将SqlQuery结果从Ebean转换为模型(Bean)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Ebean(通过Play Framework 2.1.1),我必须构建一个自制的SQL查询,但是我希望它直接返回List<MyModel>,而不是我必须查询的List<SqlRow>数据库中结果的每个ID都有一个List<MyModel>.

Using Ebean (via Play Framework 2.1.1), I have to build a home made SQL query, but I'd like it to return directly a List<MyModel>, instead of a List<SqlRow> that I would have to query the database for each id from the result to have a List<MyModel>.

是否可以将SqlQuery/SqlRow直接转换为模型?

Is it possible to cast directly a SqlQuery/SqlRow to a Model ?

实际上,我是这样做的:

Actually, I do that :

SqlQuery query = Ebean.createSqlQuery("SELECT id FROM MyModel WHERE ...");
List<SqlRow> rows = query.findList(); // not directly possible.
List<MyModel> results = new ArrayList<MyModel>();
for (SqlRow row : rows) {
    results.add(MyModel.find.idEq(row.getLong("id)));
}

理想的情况是:

SqlQuery query = Ebean.createSqlQuery("SELECT id FROM MyModel WHERE ...");
List<MyModel> results = (List<MyModel>) query.findList(); // not directly possible.

这不是很有效.

推荐答案

尝试一下:

RawSql rawSql = RawSqlBuilder.parse("SELECT id, value, ... FROM MyModel WHERE ...")
                  .columnMapping("id", "id")
                  .columnMapping("value", "value")
                  //...
                  .create();

Query<MyModel> query = Ebean.find(MyModel.class);
query.setRawSql(rawSql);
List<MyModel> result = query.findList();


或使用取景器:


Or using the finder:

Finder<Long, MyModel> finder = new Finder<Long, MyModel>(Long.class, MyModel.class);

List<MyModel> result = finder.where()
                             .eq("name", "Barack Obama")
                             //...
                             .findList();

这篇关于是否可以将SqlQuery结果从Ebean转换为模型(Bean)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆