Hibernate 从JPA1.0迁移到JPA2.0时,是什么导致此JPA日历查询中断?

Hibernate 从JPA1.0迁移到JPA2.0时,是什么导致此JPA日历查询中断?,hibernate,jpa,Hibernate,Jpa,我刚刚将一个应用程序从JPA1.0/Hibernate 3.3.2.GA迁移到JPA2.0/Hibernate 3.6.10.FINAL,我现有的一个JPA查询不再工作 查询对持久字段的值使用约束,如下所示: private java.sql.Timestamp birthday; String qlString = "SELECT u FROM User u WHERE u.birthday BETWEEN :minDate AND :maxDate"; Query query = eMgr

我刚刚将一个应用程序从JPA1.0/Hibernate 3.3.2.GA迁移到JPA2.0/Hibernate 3.6.10.FINAL,我现有的一个JPA查询不再工作

查询对持久字段的值使用约束,如下所示:

private java.sql.Timestamp birthday;
String qlString = "SELECT u FROM User u WHERE u.birthday BETWEEN :minDate AND :maxDate";
Query query = eMgrTwo.createQuery(qlString);

Calendar minDateCalendar = Calendar.getInstance();
minDateCalendar.set(1970, 4, 29);

Calendar maxDateCalendar = Calendar.getInstance();
maxDateCalendar.set(1970, 6, 29);

query.setParameter("minDate", minDateCalendar, TemporalType.TIMESTAMP);
query.setParameter("maxDate", maxDateCalendar, TemporalType.TIMESTAMP);

List results = query.getResultList();
查询如下所示:

private java.sql.Timestamp birthday;
String qlString = "SELECT u FROM User u WHERE u.birthday BETWEEN :minDate AND :maxDate";
Query query = eMgrTwo.createQuery(qlString);

Calendar minDateCalendar = Calendar.getInstance();
minDateCalendar.set(1970, 4, 29);

Calendar maxDateCalendar = Calendar.getInstance();
maxDateCalendar.set(1970, 6, 29);

query.setParameter("minDate", minDateCalendar, TemporalType.TIMESTAMP);
query.setParameter("maxDate", maxDateCalendar, TemporalType.TIMESTAMP);

List results = query.getResultList();
与jpa和hibernate的旧版本相比,这是有效的。对于较新的版本,我收到一个错误,抱怨

Exception in thread "main" java.lang.IllegalArgumentException: Parameter value [java.util.GregorianCalendar SNIP SNIP] did not match expected type [java.util.Date]

如果我将代码更改为使用日期而不是日历,它会工作。我只是想知道为什么以前的代码能工作?API有变化吗?或者我们以前使用的是未记录的功能

我想没有其他人看到这个。无论如何,这是一个迁移问题。