我面临着原始SQL的奇怪问题,我需要一些帮助才能找到解决问题的最佳方法。当然,我可以添加columnMappings,但我想确保它不是因为我做错了。
如果我没有定义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();
它没有问题。
任何建议都会非常感激。
答案 0 :(得分:0)
我认为mysql不喜欢按功能分组或排序,你应该使用你的别名“theDate”。
请注意,如果您要映射到bean对象,则别名必须是要由Ebean映射的bean的@Transient属性(否则,您将收到未知属性错误)。