【发布时间】:2019-04-18 18:26:28
【问题描述】:
我正在 JPQL 中寻找此 SQL 查询的等效项
SELECT l.*
FROM product_update l
INNER JOIN (
SELECT
ID_PRODUCT,
MAX(ID) AS maxID
FROM product_update
GROUP BY ID_PRODUCT
) groupel ON l.ID_PRODUCT = groupel.ID_PRODUCT
AND l.ID = groupel.maxID
ORDER BY ID DESC
我的java类
public class ProductUpdate extends BaseEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PRODUCT_UPDATE_SEQUENCE")
@Column(name = "ID")
private Long id;
@JoinColumn(name = "ID_PRODUCT")
@ManyToOne()
private Product product;
@JoinColumn(name = "ID_VERSION")
@ManyToOne()
private Versioning versioning;
}
确实,一个产品可能有多个版本,但系统只显示最大(id)的产品 示例:
1-Product 1 --- Version 1
2-Product 2 --- Version 1
3-Product 3 --- Version 1
4-Product 1 --- Version 2
5-Product 3 --- Version 2
6-Product 3 --- Version 3
查询刚出来
2-Product 2 --- Version 1
4-Product 1 --- Version 2
6-Product 3 --- Version 3
谢谢。
【问题讨论】:
-
您是否尝试过自己制作,或者您希望这里有人为您工作?请向我们展示您的尝试。
-
由于 JPQL 是基于类/字段的,而您还没有发布任何类,为什么不想想人们可能会为此做出什么贡献?!
-
猜猜看……你还没有发布课程(在你的问题中!)
-
这就是我所做的
SELECT pu FROM ProductUpdate pu INNER JOIN ( SELECT pu.product, MAX(pu.id) AS maxid FROM ProductUpdate pu GROUP BY pu.product ) groupepu ON pu.product = groupepu.produit AND pu.id = groupepu.maxID ORDER BY pu.id DESC。但它在 netbeans 上向我显示了这个警告,联合关联路径不是有效的表达式。这是我的表ProductUpdate (Id, Name FK Product) -
^ 请使用格式化的块在问题本身中添加您的尝试。