【问题标题】:Sql column alias not working in Ebeans rawsqlSql 列别名在 Ebeans rawsql 中不起作用
【发布时间】:2016-03-25 12:30:23
【问题描述】:

我遇到了原始 SQL 的奇怪问题,我需要一些帮助来找出修复它的最佳方法。当然,我可以添加 columnMappings,但我想确保这不是因为我做错了什么。

  • 播放框架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 错误 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();

没问题。

任何建议都将不胜感激。

【问题讨论】:

    标签: postgresql playframework ebean


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 2014-12-21
      相关资源
      最近更新 更多