【发布时间】:2016-10-20 17:13:28
【问题描述】:
我有一个 SQL 表,其中包含一些数据:
------------------+------------------------+------------------------
Name + Zone + School
-------------------------------------------+------------------------
Joe + Coolzone + VCU
Mike + ReallyCoolZone + ODU
Kyle + NotcoolZone + ODU
我在这里尝试做的是使用 JPA 只选择一行,带有区域和学校,其中学校是不同的。
因此,我期待结果:
CoolZone, VCU
ReallyCoolZone, ODU
我曾尝试在 JPA 中发出这样的查询,但我收到一条错误消息,指出返回了多个结果:
select distinct a.zone, a.school from MyEntity a
根据我所阅读的内容,此错误是有道理的,原因有两个。 a) 当我们发出 select 语句时,我们不会返回整个实体,而是部分 b) jpa 不知道如何将这些值映射到我的实体。
根据我的阅读,我可以通过创建一个新的构造函数并明确说明应该如何构造返回的对象来解决这个问题。这篇文章在这里提到了这一点:https://stackoverflow.com/a/24710759/5655414
在我创建一个新的构造函数后,我的查询字符串相当于这样:
select new MyEntity(distinct a.zone, a.school) from MyEntity a
我收到一条错误消息:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: distinct
这个应该放在什么位置? 如果这段代码很疯狂而且毫无意义,是否有更有效的方法来实现我的目标?
JPA 2.0 休眠 3.4
【问题讨论】: