我有一个使用 SpringBoot 1.5.9 的项目(无法更改版本)。
我有这些实体:
@Entity
@Table(name = "data")
public class DataEntity extends Timestampable {
@Column(name = "value")
private String value;
@Column(name = "data_timestamp")
private ZonedDateTime dataTimestamp;
@ManyToOne
@JoinColumn
private DataTypeEntity type;
@ManyToOne
@JoinColumn
private AssetEntity asset;
}
@Entity
@Table(name = "data_type")
public class DataTypeEntity extends Timestampable {
@Column(name = "name", unique = true)
private String name;
...
}
我有这个工作 SQL 查询(在 PostgreSQL 下),以检索每个资产的最新数据(源):
SELECT * FROM data d1
JOIN (
SELECT max(data_timestamp) as newest, asset_id FROM data
GROUP BY asset_id
) d2
ON d1.data_timestamp = d2.newest AND d1.asset_id = d2.asset_id
WHERE d1.type_id IN (
SELECT id FROM data_type
WHERE name = 'ELECTRICITY_CONSUMPTION'
);
我想将此查询转换为 JPA CriteriaQuery。有没有办法这样做,或者我是否需要在特定实体上使用 @SubSelect 注释?
阿晨1998
开满天机
胡子哥哥
随时随地看视频慕课网APP
相关分类