Java JPQL SELECT BETH date语句

Java JPQL SELECT BETH date语句,java,sql,jpa,jpql,Java,Sql,Jpa,Jpql,我想将此SQL语句转换为JPQL等效语句 SELECT * FROM events WHERE events_date BETWEEN '2011-01-01' AND '2011-03-31'; 这将正确地从表事件中检索信息 在我的事件中实体 @Column(name = "events_date") @Temporal(TemporalType.DATE) private Date eventsDate; 到目前为止,这是我所拥有的,但它不起作用 public

我想将此SQL语句转换为JPQL等效语句

SELECT * FROM events
WHERE events_date BETWEEN '2011-01-01' AND '2011-03-31';
这将正确地从表
事件中检索信息

在我的
事件中
实体

   @Column(name = "events_date")  
   @Temporal(TemporalType.DATE)  
   private Date eventsDate;
到目前为止,这是我所拥有的,但它不起作用

public List<Events> findAllEvents(Date startDate, Date endDate) {    
  List<Events> allEvents = entityManager.createQuery(
    "SELECT e FROM Events e WHERE t.eventsDate BETWEEN :startDate AND :endDate")  
  .setParameter("startDate", startDate, TemporalType.DATE)  
  .setParameter("endDate", endDate, TemporalType.DATE)  
  .getResultList();
  return allEvents ;  
}
public List findAllEvents(日期开始日期,日期结束日期){
List allEvents=entityManager.createQuery(
“从事件e中选择e,其中t.eventsDate介于:startDate和:endDate之间”)
.setParameter(“startDate”,startDate,TemporalType.DATE)
.setParameter(“endDate”、endDate、TemporalType.DATE)
.getResultList();
返回通道;
}
我做错了什么?谢谢。

尝试此查询(将
t.eventsDate
替换为
e.eventsDate
):

尝试此查询(将
t.eventsDate
替换为
e.eventsDate
):

公共列表findStudentByReports(日期开始日期、日期结束日期){
System.out.println(“使用此模式调用FindStudentMethod**************”
+起始日期
+结束日期
+ "*********************************************");
返回em
.createQuery(
'从Attendance Attendance中选择Attendance,其中Attendance.admissionDate介于:startDate''和endDate''之间
+ "'")
.setParameter(“startDate”,startDate,TemporalType.DATE)
.setParameter(“endDate”、endDate、TemporalType.DATE)
.getResultList();
}
公共列表查找学生报告(日期开始日期、日期结束日期){
System.out.println(“使用此模式调用FindStudentMethod**************”
+起始日期
+结束日期
+ "*********************************************");
返回em
.createQuery(
'从Attendance Attendance中选择Attendance,其中Attendance.admissionDate介于:startDate''和endDate''之间
+ "'")
.setParameter(“startDate”,startDate,TemporalType.DATE)
.setParameter(“endDate”、endDate、TemporalType.DATE)
.getResultList();
}

我不明白这个查询与问题中的查询有何不同。另外,在结束日期之前是否应该有
?为什么startDate之后和endDate之后有两个单引号?我不明白这个查询与问题中的查询有什么不同。另外,在结束日期之前是否应该有
?为什么在开始日期和结束日期之后有两个单引号?
SELECT e FROM Events e WHERE e.eventsDate BETWEEN :startDate AND :endDate
public List<Student> findStudentByReports(Date startDate, Date endDate) {
    System.out.println("call findStudentMethd******************with this pattern"
                    + startDate
                    + endDate
                    + "*********************************************");

    return em
            .createQuery(
                    "' select attendence from Attendence attendence where attendence.admissionDate BETWEEN : startDate '' AND endDate ''"
                            + "'")
            .setParameter("startDate", startDate, TemporalType.DATE)
            .setParameter("endDate", endDate, TemporalType.DATE)
            .getResultList();

}