【问题标题】:JPQL SELECT between date statement [closed]日期声明之间的 JPQL SELECT [关闭]
【发布时间】:2011-07-18 02:01:17
【问题描述】:

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

SELECT * FROM events
WHERE events_date BETWEEN '2011-01-01' AND '2011-03-31';

这会正确地从表 events 中检索信息。

在我的Events 实体中

   @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 ;  
}

我做错了什么?谢谢。

【问题讨论】:

    标签: java sql jpa jpql


    【解决方案1】:

    试试这个查询(将t.eventsDate替换为e.eventsDate):

    SELECT e FROM Events e WHERE e.eventsDate BETWEEN :startDate AND :endDate
    

    【讨论】:

      【解决方案2】:
      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();
      
      }
      

      【讨论】:

      • 我不明白这个查询与问题中的查询有何不同。另外,endDate 之前不应该有 : 吗?为什么在 startDate 之后和 end endDate 之后有 2 个单引号?
      猜你喜欢
      • 1970-01-01
      • 2018-09-24
      • 2012-04-25
      • 2021-06-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      相关资源
      最近更新 更多