Результат вашего собственного запроса не может быть просто сопоставлен с сущностями из-за агрегирования в базе данных, выполненного для расчета минимума собственных заявок, и минимума других заявок. В частности, ваша сущность Item
не имеет никаких атрибутов для хранения myBid
или lowestbid
.
Следовательно, вы хотите вернуть из метода запроса: Проекция . Проекция - это простой интерфейс с методами получения, совпадающими с полями, возвращаемыми вашим запросом:
public interface BidSummary {
UUID getItem_id();
String getTitle();
String getDescription();
double getMyBid();
double getLowestbid();
}
Обратите внимание, как метод запроса возвращает проекцию BidSummary
:
@Query(value = "SELECT item.*, MIN(myBid.bid) AS myBid, (SELECT MIN(lowestBid.bid) AS lowestbid FROM bids lowestBid WHERE lowestBid.item_id = item.item_id GROUP BY lowestBid.item_id) FROM item JOIN bids myBid ON item.item_id = myBid.item_id WHERE myBid.user_id = :user_id GROUP BY item.item_id", nativeQuery = true)
public List<BidSummary> findOwnBids(@Param("user_id") UUID userId);