У меня проблема, и @Query
в базе данных не дает мне правильных результатов.
В WorkBench с этим запросом: SELECT * FROM Table WHERE FECHA_INICIO >= '2020-02-01' AND FECHA_FIN <= '2020-02-28'
возвращает всего 18 результатов.
Но с моим JAVA кодом отображаются только 6 записей, и они являются теми, которые в столбце FECHA_INICIO
имеют 2020-02-01
, а в столбце FECHA_FIN
они имеют значение 2020-02-28
. Записи, которые в любом из этих столбцов имеют дату, которая не соответствует последнему дню месяца или первому, не показывают их. Вот в чем проблема.
Это мой JAVA код из хранилища:
public interface TableRepository extends CrudRepository<Table, String> {
@Query(value = "SELECT * FROM Table WHERE FECHA_INICIO >= :fechaInicio AND FECHA_FIN <= :fechaFin", nativeQuery = true)
List<Table> findAllBetweenDates(@Param("fechaInicio") Date fechaInicio, @Param("fechaFin") Date fechaFin);
}
Я пытался посмотреть, какой запрос выполнял код, но в журналах он показывал только следующее :
org.hibernate.SQL.logStatement - SELECT * FROM TABLE WHERE FECHA_INICIO >= ? AND FECHA_FIN <= ?
Оба столбца в базе данных имеют тип Дата. Добавьте этот код, если он работает для меня, в копию базы данных, которая у меня есть в PostgreSQL, но в MySQL, где он показывает мне только 6 записей вместо 18. Любая идея, что может происходить ?
РЕДАКТИРОВАТЬ:
Это мой класс сущности:
@Entity
@Table(name = "Table")
public class Table{
@Id
@Column(name = "ID", length = 20)
@NotNull
private String id;
@Column(name = "FECHA_INICIO")
@Temporal(TemporalType.DATE)
@NotNull
private Date fechaInicio;
@Column(name = "FECHA_FIN")
@Temporal(TemporalType.DATE)
@NotNull
private Date fechaFin;
@Column(name = "DESCRIPTION", length = 20)
@NotNull
private String descripcion;
}