oracle - 数据库 Oracle,查询日期字符串 JPA 存储库 Crud 存储库,Java 8
问题描述
注意:我不能放置一些私有代码(数据库或 Java 代码)。
我在数据库中
CREATE TABLE "SCHEMA"."ENTITY"
(
"HCODFECREGISTR" DATE,
... BLABLA
)
实体
import java.util.Date;
public class Entity implements java.io.Serializable {
private Date hcodfecregistr;
....
}
在Repository
界面中使用
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
public interface EntityRepository extends CrudRepository<Entity, Long>,
JpaRepository<Entity, Long> {
public static final String USING_STRING
= " SELECT enti FROM Entity enti WHERE "
+ " (enti.hcodfecregistr BETWEEN TO_DATE(:stringIni,'dd/MM/yyyy hh24:mi') AND TO_DATE(:stringEnd,'dd/MM/yyyy hh24:mi'))";
@Query(value = USING_STRING)
List<Object[]> getEntityUsingString(
@Param("stringIni") String stringIni, @Param("stringEnd") String stringEnd);
public static final String USING_DATE
= " SELECT enti FROM Entity enti WHERE "
+ " (enti.hcodfecregistr BETWEEN :dateIni AND :dateIni) ";
@Query(value = USING_DATE)
List<Object[]> getEntityUsingDate(
@Param("dateIni") Date dateIni, @Param("dateEnd") Date dateEnd);
}
现在我想执行一个查询。
Date fecha = //some java.util.Date
Calendar calendar = Calendar.getInstance();
calendar.setTime(fecha);
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date dateIni = calendar.getTime();
calendar.set(Calendar.HOUR, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
Date dateEnd = calendar.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
String stringIni = dateFormat.format(fecha) + " 00:00";
String stringEnd = dateFormat.format(fecha) + " 23:59";
作品!
List<Object[]> listaObjects = theRepository.getEntityUsingString(stringIni, stringEnd);
失败!它没有给我带来结果(但它也没有显示任何错误)。
List<Object[]> listaObjects = theRepository.getEntityUsingDate(dateIni, dateEnd);
问题:
我想了解为什么使用相同fecha (java.util.Date)
的方法getEntityUsingString
有效,但使用该方法getEntityUsingDate
失败(当我使用 Date 设置范围时它不会给我带来结果,而当我使用 String 设置范围时它会。)。
在我看来,它应该产生符合日期范围的相同结果。
问题是什么?
解决方案
推荐阅读
- database - 如何在 Microsoft Access 数据库中获取特定日期的记录,例如 10/21/2018 dd/mm/yyyy?
- python - re.search() 或'in',re.match() 或startswith()?
- php - 在 Woocommerce 中处理管理订单列表上的自定义批量操作
- java - 表达式 user-> { some code } 如何成为 Observer 对象?
- python - 查找列表中最小的 n 个数字的索引
- react-native - 在 React Native 中需要帮助管理导航器
- apache-spark - 在 spark python 3.5 中使用 Lampda 进行压缩解包
- yaml-cpp - 出现错误:YAML::TypedBadConversion
' - python - 无法在 Mac OS 上运行 Airflow 1.10
- d3.js - d3.js 使用回调函数设置类名失败