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 ...正如我上面写的 –