Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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标准API进行日期比较_Java_Mysql_Hibernate - Fatal编程技术网

Java 使用Hibernate标准API进行日期比较

Java 使用Hibernate标准API进行日期比较,java,mysql,hibernate,Java,Mysql,Hibernate,环境: 冬眠4 雄猫6 问题: 我在MySQL数据库中有一个DATETIME类型的列(abhishekDate是列名)。 我想将用户提供的日期与此DATETIME列进行比较 但是比较不应包括日期时间列的时间部分。 比较应仅基于日期部分。 因为查询是动态的,所以我使用的是CriteriaAPI。 但我无法使用标准API实现同样的效果。 我试过下面的代码,但它不工作 你能帮我写这个查询吗 我是否也在使用正确的方法 我得到的例外是: Mar 08, 2016 9:26:59 PM org.apache

环境: 冬眠4 雄猫6

问题:

我在MySQL数据库中有一个DATETIME类型的列(abhishekDate是列名)。
我想将用户提供的日期与此DATETIME列进行比较

但是比较不应包括日期时间列的时间部分。 比较应仅基于日期部分。

因为查询是动态的,所以我使用的是CriteriaAPI。 但我无法使用标准API实现同样的效果。 我试过下面的代码,但它不工作

你能帮我写这个查询吗

我是否也在使用正确的方法

我得到的例外是:

Mar 08, 2016 9:26:59 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet mvc-dispatcher threw exception
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'abhishekDate' in 'where clause'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
但abhishekDate存在于用户类(或表)中

代码:

Criteria criteria = getSession().createCriteria(User.class);
Conjunction and = Restrictions.conjunction();

and.add(Restrictions.sqlRestriction("year(abhishekDate) = ? ",abhishekDate,org.hibernate.type.StandardBasicTypes.DATE));
and.add(Restrictions.sqlRestriction("month(abhishekDate) = ? ",abhishekDate,org.hibernate.type.StandardBasicTypes.DATE));
and.add(Restrictions.sqlRestriction("day(abhishekDate) = ? ",abhishekDate,org.hibernate.type.StandardBasicTypes.DATE));

我尝试了另一种方法,它对我有效。我检查表中的日期是否介于用户日期和用户日期加上一天之间,如下所示

Calendar cal = Calendar.getInstance();
cal.setTime(userDate);
cr.add(Restrictions.ge("yourDate", cal.getTime()));
cal.add(Calendar.DATE, 1);
cr.add(Restrictions.le("yourDate", cal.getTime()));

我尝试了另一种方法,它对我有效。我检查表中的日期是否介于用户日期和用户日期加上一天之间,如下所示

Calendar cal = Calendar.getInstance();
cal.setTime(userDate);
cr.add(Restrictions.ge("yourDate", cal.getTime()));
cal.add(Calendar.DATE, 1);
cr.add(Restrictions.le("yourDate", cal.getTime()));

第二个条件应该是限制。lt(“yourDate”,cal.getTime())第二个条件应该是限制。lt(“yourDate,cal.getTime())