hibernate hql中當查詢條件爲時間格式時的問題

上代碼
java

StringBuilder builder = new StringBuilder("from ExpressTrajectory where memberExpressId = ? and createDate >= ? and createDate <= ?");
List list = super.createQuery(builder.toString(), memberExpressId, beginDate, endDate).list();

其中beginDate和endDate是java.util.Date類型,這段代碼執行會報異常:ui


org.hibernate.HibernateException: ordinal parameter mismatchhibernate

大概意思是參數類型不匹配code

而後看了一下基類的createQuery方法是這樣寫的:get

public Query createQuery(final String queryString, final Object... values) {
		Query query = getSession().createQuery(queryString);
		if (values != null) {
			for (int i = 0; i < values.length; i++) {
				query.setParameter(i, values[i]);
			}
		}
		return query;
	}

其中使用了setParameter方法來設置參數,這樣彷佛hibernate處理不了Date類型的參數io

因而把代碼改爲class

StringBuilder builder = new StringBuilder("from ExpressTrajectory where memberExpressId = ? and createDate >= ? and createDate <= ?");
List list = super.createQuery(builder.toString()).setString(0, memberExpressId).setDate(1, beginDate).setDate(2, endDate).list();

直接用setDate來設置Date類型的參數,問題解決!
List

相關文章
相關標籤/搜索