У меня есть две вложенные сущности, подобные этой
@Entity
@Table(name = "daily_past_prices")
public class DailyPastPrice {
@Id
private String symbol;
@OneToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
@JoinColumn(name = "symbol")
private List<DailyPrice> prices = null;
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public List<DailyPrice> getPrices() {
return prices;
}
public void setPrices(List<DailyPrice> prices) {
this.prices = prices;
}
}
@Entity
public class DailyPrice {
@Id
@Temporal(TemporalType.TIMESTAMP)
private Date date;
private String price;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
Я сохраняю дату в Temporal.TIMESTAMP, что означает, что дата сохраняется как 1555732546000
эта в базе данных.Теперь мне нужно запросить значения после определенной даты.Итак, я настроил репозиторий как этот
@Repository
public interface DailyPastPriceRepo extends JpaRepository<DailyPastPrice,String> {
DailyPastPrice findBySymbolAndPricesDateAfter(String symbol, Date date);
}
И у меня есть метод в контроллере как этот
@GetMapping("/{symbol}/{upto}")
private ResponseEntity<DailyPastPrice> getDayWisePastPrice(@PathVariable String symbol,@PathVariable int upto) throws ParseException {
DailyPastPrice pastPrice = dailyPastPriceRepo.findBySymbol(symbol.toUpperCase());
Date date = CurrentDate.getPreviousDates(upto);
System.out.println("1 day before "+date);//this gives me a date before one day if upto is 1 like this Fri Apr 19 11:50:52 IND 2019
DailyPastPrice ppBefore1d = dailyPastPriceRepo.findBySymbolAndPricesDateAfter(symbol.toUpperCase(),date);
if (ppBefore1d == null){
return new ResponseEntity<>(ppBefore1d, HttpStatus.NOT_FOUND);
}
return new ResponseEntity<>(ppBefore1d, HttpStatus.OK);
}
Но я получаю null
и, следовательно, NOT_FOUND
.Нужно ли конвертировать Fri Apr 19 11:50:52 IND 2019
в long
как 1555732546000
во время запроса, но тогда это будет тип long
, и тогда я не смогу запросить его как dateAfter
.Так как я могу это сделать?Любая помощь будет оценена.Спасибо