在 HQL 而不是表中,您有实体(类对象)。我想你的表 salesdiary 成为 SalesDiary 实体。
第一个查询:
select count(S.id)
from SalesDiary S
where S.propertytype in ('item1')
and MONTH(S.time) = MONTH(current_date)
第二个查询:
select count(S.id)
from SalesDiary S
where S.propertytype in ('item1')
and YEAR(S.time) = YEAR(current_date())
MONTH 函数获取输入日期的月份编号,YEAR 函数获取输入日期的年份编号。
current_date() 等效于 SQL Server GETDATE()。
EDIT AFTER COMMENT
很奇怪,Hibernate 必须使用正确的下划线 DBMS 功能进行转换。
如果你可以使用参数试试这个:
select count(S.id)
from SalesDiary S
where S.propertytype in ('item1')
and YEAR(S.time) = YEAR(:currDate)
当您将 HQL 查询变为对象 Query 时,您将通过以下方式将 currDate 参数替换为 setDate 函数:
String hql =
"select count(S.id)
from SalesDiary S
where S.propertytype in ('item1')
and YEAR(S.time) = YEAR(:currDate)";
Query q = session.createQuery(hql);
q.setDate("currDate", new GregorianCalendar().getTime());
q.list();
我希望现在没问题;)