【发布时间】:2022-01-18 14:29:37
【问题描述】:
我正在尝试将本机查询的结果放入投影中。 但是查询结果值似乎没有设置为投影对象中的正确字段。
我的原生查询是这样的:
@Query(value = "select p.siteId,"
+ " sum(case when p.arrivalDate = :date then 1 else 0 end) as arrivalTotal "
+ " sum(case when p.departureDate = :date then 1 else 0 end) as departureTotal "
+ " from product p "
+ " where p.collectionSite = :siteId"
+ " and (p.arrivalDate = :date or p.departureDate = :date", nativeQuery = true)
List<DeliverySummary> getDeliverySummary(@Param("siteId") String siteId,
@Param("date") String date);
我的投影类是:
public interface DeliverySummary {
String getSiteId();
String getArrivalTotal();
String getDepartureTotal();
}
结果将返回如下:
siteId = 5 (when actual is site1)
arrivalTotal = "site1" (when actual is 2)
departureTotal = 2 (when actual is 5)
我怀疑问题是因为投影对象中的字段不是表(和实体)的本机字段,它们是总和。有没有办法正确设置它? TIA
【问题讨论】:
-
您是否也尝试为 siteId 添加别名(作为 siteId)?
-
@SimonMartinelli,是的。还尝试使用其他变量名称以及相应的投影类中的字段名称。但仍然没有将字段值设置为预期的字段。
-
这听起来很奇怪。并且您 100% 确定查询返回正确的值?
-
@SimonMartinelli,是的。这些值是正确的,但它们的变量分配不正确。但我在这里找到了一个适合我的解决方案stackoverflow.com/questions/13012584/…