日期声明之间的 JPQL SELECT [关闭]

Posted

技术标签:

【中文标题】日期声明之间的 JPQL SELECT [关闭]【英文标题】:JPQL SELECT between date statement [closed] 【发布时间】: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 ;  

我做错了什么?谢谢。

【问题讨论】:

【参考方案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 个单引号?

以上是关于日期声明之间的 JPQL SELECT [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

JPQL 构造函数忽略具有 NULL 值的行

春季 JPQL 处理日期

JPQL 在@Query 注释中检查大于小于今天的日期

JPQL 查询删除不接受声明的 JOIN?

JPQL 在 Select 语句中创建新对象 - 避免还是接受?

如何使用 JPQL 从 SELECT 操作中获取第一行?