命名查询中的Hibernate错误

我试图从当前日期在任何给定月份的第一天和最后一天之间的表中提取信息。

我收到运行时错误“命名查询中的错误:Department.byDate”

我正在向您提供我认为可能导致问题的代码,如果需要任何其他代码,请在评论中告诉我。

我的命名查询如下所示:

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

我在我的DAO中使用这个命名查询的方法如下所示:

 public List 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 depList = (List)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中,您正在使用实体及其属性,因此* character没有任何意义。
  2. HQL / JPQL类和属性名称区分大小写 。

您应该按以下方式编写查询:

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