我需要使用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
如何解决此错误?
答案 0 :(得分:0)
我过去处理这个问题的一种方法是通过在我的数据库中创建一个视图来一起从图片中取出休眠。因此,如果我有一个包含Event
,EVENT_ID
,START_DATE
列的表NAME
,我会使用我的RDBMS创建一个视图,从{{{{{{ 1}}。
视图看起来像:
<强> V_EVENT 强>
EVENT_ID,START_DATE,NAME,START_MONTH,START_YEAR
获得此视图后,您可以创建实体并运行使用视图START_DATE
和START_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);