【发布时间】:2019-06-28 21:56:30
【问题描述】:
注意:我不能放置一些私有代码(数据库或 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 设置范围时,它会带来结果。)。
在我看来,它应该产生符合日期范围的相同结果。
有什么问题?
【问题讨论】:
标签: oracle jpa crud spring-repositories