首页 > 解决方案 > 我如何在spring boot jpa中编写内部查询

问题描述

我的查询是这样的:

SELECT * FROM property_data p JOIN (SELECT property_id, MAX(date) AS MaxDateTime FROM property_data WHERE property_id IN (18255, 80604, 35983, 41220)GROUP BY property_id) groupedtt ON p.property_id = groupedtt.property_id AND p.date = groupedtt。 MaxDateTime AND p.property_id IN (18255, 80604, 35983, 41220);

我以这种形式写过:

@Query("SELECT p FROM DateWisePropertyInfo p JOIN (SELECT h.property_id, MAX(h.date) AS MaxDateTime FROM DateWisePropertyInfo h WHERE h.property_id IN :hIds GROUP BY h.property_id) p.groupedtt ON p.property_id = groupedtt.property_id AND p.date = groupedtt.MaxDateTime AND p.property_id IN :hIds")
List<DateWisePropertyInfo> findByLatestDateAndPropertyIdIn(@Param("hIds") List<Long> propertyIds);

详细错误:

Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 81 [SELECT p FROM com.oyorooms.retention.entity.primary.DateWisePropertyInfo p JOIN (SELECT h.property_id, MAX(h.date) AS MaxDateTime FROM com.oyorooms.retention.entity.primary.DateWisePropertyInfo h WHERE h.property_id IN :hIds GROUP BY h.property_id) p.groupedtt ON p.property_id = groupedtt.property_id AND p.date = groupedtt.MaxDateTime AND p.property_id IN :hIds]

但这不起作用,抛出 InvocationTargetException。

标签: javasqlspring-bootjpa

解决方案


推荐阅读