簡體   English   中英

命名查詢中的休眠錯誤

[英]Hibernate errors in named queries

我正在嘗試從表中提取信息,其中當前日期在任何給定月份的第一天和最后一天之間。

我收到運行時錯誤“命名查詢中的錯誤:Department.byDate”

我正在向您提供我認為可能導致問題的代碼,如果需要任何其他代碼,請在評論中告知我。

我的命名查詢如下所示:

@NamedQuery(name="Department.byDate", query="select * from department where date >= :first AND date <= :last")

我在DAO中以一種類似於以下方式的方法使用此命名查詢:

public List<Department> getRecords(Date dateFirst, Date dateLast){
    Session session= sessionFactory.openSession();
    session.beginTransaction();

    Query query = session.getNamedQuery("Department.byDate");
    query.setDate("first", dateFirst);
    query.setDate("last", dateLast);

    List<Department> depList = (List<Department>)query.list();

    session.getTransaction().commit();
    session.close();

    return depList;
}

我獲取月份的第一天和最后幾天的方法如下:

Calendar first = Calendar.getInstance();
first.set(Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.MONTH), Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH));
Date dateFirst = first.getTime();

Calendar last = Calendar.getInstance();
first.set(Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.MONTH), Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH));
Date dateLast = last.getTime();
  1. 在HQL / JPQL中,您正在使用實體及其屬性,因此*字符沒有意義。
  2. HQL / JPQL類和屬性名稱區分大小寫

您應該通過以下方式編寫查詢:

select d from Department d where d.date >= :first AND d.date <= :last

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM