Sql列别名在Ebeans rawsql

时间:2016-03-25 12:30:24

标签: postgresql playframework ebean

我面临着原始SQL的奇怪问题,我需要一些帮助才能找到解决问题的最佳方法。当然,我可以添加columnMappings,但我想确保它不是因为我做错了。

  • Play Framework APP
  • Ebeans ORM
  • Postgresql 9.,4

如果我没有定义columnMappings,则对Postgresql数据库执行以下RawSQL失败,尽管我定义了别名:

    String sql
            = "  Select date_trunc('day', end_time) as theDate,  "
            + "  count(*) as value "
            + "  From ebay_item "
            + "  group by date_trunc('day', end_time) ";

    RawSql rawSql =
            RawSqlBuilder
                    .parse(sql)
                    .create();

错误:

016-03-25 12:05:15,303 ERROR m.c.a.e.s.p.SimpleDBPromiseService - 执行命名查询时出错 javax.persistence.PersistenceException:在models.com.abiesolano.ebay.sqlpojos.RangedDateCounter

上找不到属性[dateTrunc('day')

如果我切换到H2数据库:

    String sql
            = " SELECT trunc(end_time) as theDate, "
            + "  count(*) as value "
            + "  From ebay_item "
            + "  Group by trunc(end_time)";

    RawSql rawSql =
            RawSqlBuilder
                    .parse(sql)
                    .create();

它没有问题。

任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

我认为mysql不喜欢按功能分组或排序,你应该使用你的别名“theDate”。

请注意,如果您要映射到bean对象,则别名必须是要由Ebean映射的bean的@Transient属性(否则,您将收到未知属性错误)。