【发布时间】:2020-08-13 12:57:30
【问题描述】:
我有一个问题,数据库中的@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;
}
【问题讨论】:
-
存储库中的日期是 java.util.Date 还是 java.sql.Date?另外,您的实体中用于日期的类型是什么?
-
在我的实体和存储库中是 java.util.Date @RitikaGoel
-
您能否也分享一下您的实体的结构?
-
当然@RitikaGoel
标签: mysql spring-boot jpa