Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate获取当前年度的所有事务_Java_Hibernate - Fatal编程技术网

Java Hibernate获取当前年度的所有事务

Java Hibernate获取当前年度的所有事务,java,hibernate,Java,Hibernate,假设我有一个类TransactionDetails。此表保存过去10年的交易记录。现在,我如何获得本年度的所有交易详情 我使用的标准如下 Criteria criteria = session.getCurrentSession().createCriteria(TransactionDetails.class); criteria.add(Restrictions.eq("entryDate", thisYear)); return (List<TransactionDetails>

假设我有一个类TransactionDetails。此表保存过去10年的交易记录。现在,我如何获得本年度的所有交易详情

我使用的标准如下

Criteria criteria = session.getCurrentSession().createCriteria(TransactionDetails.class);
criteria.add(Restrictions.eq("entryDate", thisYear));
return (List<TransactionDetails>) criteria.list();
Criteria=session.getCurrentSession().createCriteria(TransactionDetails.class);
标准。添加(限制。eq(“今年的进入日期”);
返回(列表)条件。列表();
我知道我可以通过检测年初和年末以及使用BEVER运算符进行查询来实现这一点。但我正在寻找一种方法,在一行这样做。e、 g.与sql一样,我们使用
CURDATE()


如何做到这一点

尝试
限制。介于(“entryDate”、loDate、highDate)

编辑:

您也可以使用(特定于供应商的)sql限制

例如:
Restrictions.sqlRestriction(“to_char(输入日期,'YYYY')=?,“2015”,StringType.INSTANCE)

注意:这可能比

Restrictions.between("entryDate",fromYear, thisYear) 
我能给你你需要的。此处引用

或者计算10年前的年份/日期并使用

Restrictions.ge("entryDate",fromYearMinus10);//uses years less than 10

您需要将
介于
之间的限制与日期范围一起使用:

Calendar lowCal = Calendar.getInstance();
lowCal.set(Calendar.DAY_OF_YEAR, lowCal.getActualMinimum(Calendar.DAY_OF_YEAR);
Date lowDate = lowCal.getTime();

Calendar highCal = Calendar.getInstance();
lowCal.set(Calendar.DAY_OF_YEAR, lowCal.getActualMaximum(Calendar.DAY_OF_YEAR);
Date highDate = highCal.getTime();

Criteria criteria = session.getCurrentSession().createCriteria(TransactionDetails.class);
criteria.add(Restrictions.between("entryDate", lowDate, highDate));
return (List<TransactionDetails>) criteria.list();
Calendar lowCal=Calendar.getInstance();
lowCal.set(日历年的日历日,lowCal.getActualMinimum(日历年的日历日);
Date lowDate=lowCal.getTime();
Calendar highCal=Calendar.getInstance();
lowCal.set(日历年的日历日,lowCal.getActualMaximum(日历年的日历日);
Date highDate=highCal.getTime();
Criteria=session.getCurrentSession().createCriteria(TransactionDetails.class);
标准。添加(限制。介于(“entryDate”、“lowDate”、“highDate”);
返回(列表)条件。列表();

日期是通过基本Java
Calendar
API获取的。当然,如果可以通过不同的方式获取日期,例如使用Joda Time。

这不是我想要的。但我想这是唯一的选择。