1
有任何人知道如何PostgreSQL的查詢JPA @Query,平均有限制元素的
select avg(stock.price) from stock where (stock.name = 'some_name' and stock.date in (select stock.date from stock where stock.name = 'some_name' limit 10))
轉換爲JPA查詢與@Query註解?
現在我有一些混亂,但混亂的工作:
public Double countStocksAvgToDateAndDaysAmount(String stockName, String date, Integer days) {
List<StockEntity> stocksByNameTillDate = stockRepository.getStocksByNameTillDates(stockName,
java.sql.Date.valueOf(date));
Integer countDays = 0;
Double sum = 0.0;
Double avg = 0.0;
for (StockEntity stock : stocksByNameTillDate) {
countDays++;
sum += stock.getPrice();
if (countDays >= days) {
break;
}
}
avg = sum/countDays;
return avg;
}
其中函數stockRepository.getStocksByNameTillDates()使用@Query
@Query("select stock from StockEntity stock where ((stock.name like :name) and (stock.date <= :date))")
public List<StockEntity> getStocksByNameTillDates(@Param("name") String name,@Param("date") Date date);
我認爲這是一個小(或更糟,多於少許)次優。 我讀了JPA查詢不支持類似限制。
有沒有人知道如何改進或使這個代碼更優化?我的意思是JPA爲我而不是這個類做這件事的方式,而不是使我的java代碼更優化。
JPQL不提供指定子查詢中行數限制的方法。 –
以上我寫了 「我讀過JPA查詢不支持類似限制的東西。」 但無論如何回覆:) – solejnik
JPA查詢是否支持限制...只是不在SUBQUERY ...正如我上面寫的 –