Я пытаюсь получить сегодняшние записи из базы данных mysql.
Я пытался использовать springboot data-jpa и метод findByDate (Date date, Pageable pageable) из jpa-репозитория, и он всегда возвращал пустые результаты.
Вот созданный код сущности:
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id_synop")
private Long id;
@Column(name="contenu")
private String contenu;
@Column(name="date", columnDefinition="TIMESTAMP(0)")
@Temporal(TemporalType.TIMESTAMP)
private Date date;
@ManyToOne(cascade= {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},
fetch=FetchType.LAZY)
@JoinColumn(name="id_station")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
private Station station;
и вот таблица Mysql, созданная с помощью Mysql WorkBench:
CREATE TABLE `synop` (
`id_synop` bigint(20) NOT NULL AUTO_INCREMENT,
`id_station` bigint(20) NOT NULL,
`contenu` varchar(255) NOT NULL,
`date` timestamp NOT NULL,
PRIMARY KEY (`id_synop`),
UNIQUE KEY `idmsgsynop_UNIQUE` (`id_synop`),
KEY `fk_synope_station_idx` (`id_station`),
CONSTRAINT `fk_synope_station` FOREIGN KEY (`id_station`) REFERENCES `station` (`id_station`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;
Код репозитория jpa:
import java.util.Date;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SynopRepository extends JpaRepository<Synop, Long> {
public Page<Synop> findByStationId(Long stationId, Pageable pageable);
public Page<Synop> findByDate(Date date, Pageable pageable);
}
и код контроллера:
@GetMapping("/synops-today")
public Page<Synop> findToday(@RequestParam(defaultValue="1") int page,Pageable pageable) {
return synopRepository.findByDate(new Date(),PageRequest.of(page-1, 10, Sort.by("date").ascending()));
}
Я ожидаю получить сегодняшние записи с помощью метода findByDate (...), но, похоже, он не работает. Я также заметил небольшую проблему при просмотре данных из MysqlWorkbench: даты кажутся на 2 часа раньше (например, сейчас 11:57, но в программном обеспечении mysql он показывает 9:57, когда я запрашиваю время сервера, он показывает, сколько времени ...)
На самом деле меня не волнуют часы / минуты / секунды, я просто хочу получить сегодняшние записи.