获取特定月份和年份的记录

时间:2012-12-04 10:28:08

标签: hibernate date hql

我需要使用Hibernate从特定月份和年份中提取记录。

我的代码:

if (!Converter.isStringNullOrEmpty(month ) && !Converter.isStringNullOrEmpty(year) ) {
    restrictionAnno = Restrictions.eq("year(dtControllo)",month );
    restrictionMese = Restrictions.eq("month(dtControllo)",year);
}

这会产生一个Hibernate异常:

could not resolve property: month(dtControllo) of: it.iet.ortles.hbean.TableauPresenza

如何解决此错误?

2 个答案:

答案 0 :(得分:0)

我过去处理这个问题的一种方法是通过在我的数据库中创建一个视图来一起从图片中取出休眠。因此,如果我有一个包含EventEVENT_IDSTART_DATE列的表NAME,我会使用我的RDBMS创建一个视图,从{{{{{{ 1}}。

视图看起来像:

<强> V_EVENT

  

EVENT_ID,START_DATE,NAME,START_MONTH,START_YEAR

获得此视图后,您可以创建实体并运行使用视图START_DATESTART_YEAR中的两个附加列的查询。这简化了在Hibernate / ORM中创建where子句语句的作用。

答案 1 :(得分:0)

我想提一件事:

首先:年月变量应该越过

restrictionAnno = Restrictions.eq("year(dtControllo)",year);
restrictionMese = Restrictions.eq("month(dtControllo)",month);

第二:您可以尝试使用“lt”和“gt”方法来捕获其间的记录。

restrictionAnno = Restrictions.lt(field, monthEndDate);
restrictionMese = Restrictions.gt(field, monthStartDate);