命名查询中的 Hibernate 错误
Hibernate errors in named queries
我正在尝试从 table 中提取信息,其中当前日期介于任何给定月份的第一天和最后一天之间。
我收到运行时错误"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();
- 在 HQL/JPQL 中,您正在处理实体及其属性,因此
*
字符没有意义。
- HQL/JPQL class 和 属性 名字是 case sensitive.
您应该按以下方式编写查询:
select d from Department d where d.date >= :first AND d.date <= :last
我正在尝试从 table 中提取信息,其中当前日期介于任何给定月份的第一天和最后一天之间。
我收到运行时错误"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();
- 在 HQL/JPQL 中,您正在处理实体及其属性,因此
*
字符没有意义。 - HQL/JPQL class 和 属性 名字是 case sensitive.
您应该按以下方式编写查询:
select d from Department d where d.date >= :first AND d.date <= :last