【发布时间】:2019-10-07 02:39:27
【问题描述】:
我正在使用 spring-jpa 并使用实体管理器进行持久化。
我正在开发一个 spring-application 并尝试检索在特定时间之前持续存在的所有实体,并将它们按其 Id 分组。
使用 entitymanager 在 createQuery 中尝试了以下查询
"Select se From SampleEntity se where se.createdDate > :elapsedTime group by se.uid"
模型如下所示:
class SampleEntity
{
@Id
private String uid; //Cannot be null
@Id
private String uid2; //Should be unique,
//also combo of uid, uid2 should be unique
private String name;
private Date createdDate;
private Date updatedDate;
}
假设db中有以下数据
Uid Uid2 Name CreatedDate UpdatedDate
A-123 X-123 AX 10/6/2019 10:00:00AM 10/6/2019 10:00:00AM
A-123 X-124 AX 10/6/2019 10:00:20AM 10/6/2019 10:00:20AM
B-124 Y-125 BY 10/6/2019 10:01:00AM 10/6/2019 10:01:00AM
B-124 Y-126 BY 10/6/2019 10:01:20AM 10/6/2019 10:01:20AM
实际结果:
不断收到错误“不是按表达式分组”
预期:
我希望实体作为 Uid 组被检索。
所以,我希望能够查询和检索 2 个对象的列表,其中每个对象依次是具有相同 uid 的实体的列表/数组。
对象 1 - 将包含 2 个示例实体对象,其中包含来自以下 2 行的数据: A-123 X-123 AX 2019 年 10 月 6 日上午 10:00:00 2019 年 10 月 6 日上午 10:00:00 A-123 X-124 AX 2019 年 10 月 6 日上午 10:00:20 2019 年 10 月 6 日上午 10:00:20
对象 2 - 将包含 2 个示例实体对象,其中包含来自以下 2 行的数据: B-124 Y-125 2019 年 10 月 6 日上午 10:01:00 2019 年 10 月 6 日上午 10:01:00 B-124 Y-126 2019 年 10 月 6 日上午 10:01:20 2019 年 10 月 6 日上午 10:01:20
这可能吗?如果是,如何?我错过了什么?
【问题讨论】:
标签: java jpa spring-data-jpa jpql