【发布时间】:2020-06-21 18:04:28
【问题描述】:
我有一个这样的实体:
@Entity
class Point{
@EmbeddedId
private PointIdentity pointIdentity;
private float latitude;
private float longitude;
@Embeddable
public static class PointIdentity implements Serializable {
private Long id;
private ZonedDateTime timestamp;
}
}
有EmbeddedId,所以“id”列可以是多条id相同的记录。
我需要使用我认为的 CriteriaQuery 和 JPA 规范获取每个 id 的最新记录,但不知道如何。
在 SQL 中,这将是这样的:
SELECT id, MAX(timestamp)
FROM geodata
GROUP BY id
有什么办法吗?
任何帮助,谢谢。
【问题讨论】:
-
您提到有一个 id,但您没有告诉我们其中有哪些字段。
-
每个id只有一个时间戳(在同一行)。目前尚不清楚您的组是什么(每个 id 的最后一条记录是什么意思)
-
@Lesiak 我的意思是每个 id 的最新记录
-
Id,根据定义,是唯一的。您不能有多个具有相同 id 的记录。
-
@Lesiak,有约束键,对不起,id+timestamp,更新了代码。所以这里可以是具有相同id的多行。也许 SQL 查询会让我的问题清楚。我需要这样做,只使用 spring jpa: SELECT id, MAX(timestamp) FROM geodata GROUP BY id
标签: spring spring-boot jpa spring-data-jpa criteria-api