Java Spring Data пустой список при попытке поиска по дате
Мне нужно получить коллекцию заказов по дате (БЕЗ времени), но при вызове findByOrderDate() я получаю 0, хотя в бд записи есть. Почему я получаю пустой список и как этой исправить?
Controller:
@GetMapping("/analytics")
public String analyticsPage(
Model model,
@RequestParam(required = false, name = "dateFrom") @DateTimeFormat(pattern = "yyyy-MM-dd") Date dateFrom,
@RequestParam(required = false, name = "dateTo") @DateTimeFormat(pattern = "yyyy-MM-dd") Date dateTo
) {
System.out.println(orderRepo.findByOrderDate(dateFrom).size()); // **Получаю 0**
return "/admin/analytics";
}
OrderRepo:
public interface OrderRepo extends JpaRepository<Order, Long> {
Order findByOrderReference(String or);
List<Order> findByOrderDate(@Temporal(TemporalType.DATE) Date date);
List<Order> findByOrderDateBetween(Date from, Date to);
}
entity:
@Entity(name = "order")
@NoArgsConstructor
@Getter
@Setter
public class Order {
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "order_date")
@Temporal(TemporalType.TIMESTAMP)
@NotNull
private Date orderDate;
Ответы (1 шт):
Потому что вы написали неправильно :)
Метод List<Order> findByOrderDate(@Temporal(TemporalType.DATE) Date date) будет искать записи не по тому, как вы хотите. Насколько я понял, вы хотите найти все записи после указанной даты. Данный метод будет искать записи В УКАЗАННУЮ ДАТУ С ТОЧНОСТЬЮ ДО НАНОСЕКУНДЫ (немного утрировал, чтобы было понятнее)
Вот правильное наименование метода :: List<Order> findByOrderDateIsAfter(@Temporal(TemporalType.DATE) Date dateFrom);