2 回答
TA贡献1871条经验 获得超8个赞
这里有很多问题 - 其中一个是返回类型(ReportTopTenBiddersTable 对象的列表),它似乎没有为完整的投标信息留下任何位置。
零件不合适(sql 与 jpql 混合在一起),类型不对齐 - 但从这个简短的示例中很难判断错误的根源是什么 - 以及最佳解决方案。
最简单的解决方案之一是将投标信息添加到 ReportTopTenBiddersTable 对象;这样您就可以删除case
(但仍保留数据)并保持签名完整:
更改构造函数
ReportTopTenBiddersTable
以接受“Bid”对象(并将其存储在字段中)。将查询开头的构造函数调用更改为包含
b
(您可以省略日期,因为它b
无论如何都可以访问):
select new com.withgratitude.api.core.domain.ReportTopTenBiddersTable( CONCAT(u.firstName, ' ', u.lastName), b.auctionId, b.date) ...
TA贡献1936条经验 获得超6个赞
要添加到 Andronicus 的答案,我想您可以使用nativeQuery纯 SQL 来使用和编写您的数据库请求。
@Query(value = "select CONCAT(u.first_name, ' ', u.last_name) as name, b.auction_id, b.date, " +
"case b.is_thewinner when 0 then 'No' when 1 then 'Yes' end as WinnerBid, b.offer " +
"from bids b, users u " +
"where b.user_id = u.user_id " +
"order by name " +
"limit 10", nativeQuery = true)
List<ReportTopTenBiddersTable> reportTopTenBiddersTable();
添加回答
举报