En çok satılan ürünleri miktarına göre yüklemek istiyorum. Bunlar benim tablolar şunlardır:Spring Data JPA ile Sum SQL tarafından bir grup nasıl kullanılır?
Product
id name
1 AA
2 BB
Productorder
order_id product_id quantity
1 1 10
2 1 100
3 2 15
4 1 15
Bu benim Bahar Veri Deposu: bulunamadı Kolon:
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
@Query(value = "select top 5 p.name, sum(po.quantity) as total_quantity from product p " +
"inner join productorder po " +
"on p.id = po.product_id " +
"group by p.id, p.name " +
"order by total_quantity desc", nativeQuery = true)
List<Product> findTopFiveBestSeller();
}
Ben HsqlException alıyorum id
Bu hata bir şey yok bence her iki tablo için olduğu gibi id sütunu ile yapmak. "Sum sorgularına göre gruplandır", Bahar verileriyle çalışır mı? Çünkü Spring Data, veri tabanından sadece ürün özelliklerini seçmeli ve bu sql ile toplamı (po.quantity) seçtikçe benim için biraz garip geliyor. Spring verileri bunu halledebilir ve sonucu bir Liste olarak dönüştürebilir mi?
PS: DB olarak gömülü HSQLDB kullanıyorum.
Bir Ürünün bir kimliği ve bir adı olduğundan, adların ve toplamaların sihirli bir şekilde geri döndürülmesi bir Liste'u nasıl iade edebilir? Sorgunuz ürünleri iade etmiyor, bu nedenle dönüş türü List –
olmamalıdır. Hata büyük olasılıkla gruptan geliyor, p.id ile gruplamaya çalışıyorsunuz, ancak bu sizin seçtiğiniz listenizde değil. – JMK
Spring, ids concrete Objects'in dönüştürdüğü DomainClassConverter'e sahiptir. En azından düşündüğüm şey bu ... Şimdi "en iyi 5 p. * Seçtiniz" diye değiştirdim ... Teşekkürler! "En iyi 5'i seç" p.id çalışmıyor. – akcasoy