我使用 Hibernate 得到以下异常:
JPAQueryException 发生:执行查询时出错 select f from Flyer as f join f.events as e where e.start > ? 和 e.start < ? 并且 f.popularityTag > 1 组按 f 顺序按 sqrt((-118.39419-f.venue.lng) * (-118.39419-f.venue.lng)+(34.024353-f.venue.lat)*(34.024353-f.场地.lat)) asc:错误:列“venue2_.lng”必须出现在 GROUP BY 子句中或用于聚合函数
上面显示了查询的 HQL。HQL 生成的 SQL 如下:
选择 flyer0_.id 作为 id345_,flyer0_.venue_id 作为venue77_345_ from flyer0_inner join event events1_ on flyer0_.id=events1_.flyer_id 交叉加入场地venue2_ where flyer0_.venue_id=venue2_.id 和 events1_.start>?和 events1_.start1 按 flyer0_.id 按 sqrt((-118.39419-venue2_.lng)*(-118.39419-venue2_.lng)+(34.024353-venue2_.lat)*(34.024353-venue2_.lat)) 顺序分组
表格是传单、活动和场地。
事件表跟踪传单的开始和停止时间......一个传单可以在多天重复......因此有多个事件。
每个传单都有一个场地,传单上的广告将在那里进行。
就我的数据库而言,我使用的是 Heroku PostgreSQL Crane,如以下 URL 中所述。我相信它使用 PostgreSQL 9.1:
- https://postgres.heroku.com/blog/past/2012/5/3/crane_the_new_50_per_month_production_database_/
- https://addons.heroku.com/heroku-postgresql
- https://devcenter.heroku.com/articles/heroku-postgresql
在休眠方面,我正在使用的 Play Framework 1.2.5 似乎使用:
- org.hibernate -> hibernate-core 3.6.10.Final
- org.hibernate -> hibernate-commons-annotations 3.2.0.Final
- org.hibernate -> hibernate-entitymanager 3.6.10.Final
- org.hibernate -> hibernate-validator 4.1.0.Final
我的问题是导致 JPAQueryException 的原因,我该如何解决?
谢谢!