使用hibernate時,通常可以通過查看它所反對的屬性來找出參數的類型,或者hibernate默認識別某些類型(例如java.util.Date)。使用函數進行Hibernate參數打字
但是我有一些使用函數(dateadd)的查詢。在這些查詢中使用具有自定義類型綁定的對象失敗(當它無法計算出類型時,hibernate似乎將其默認爲BINARY)。我必須在查詢參數中傳入正確的休眠「類型」。
這將失敗
Query query = session.createQuery(hql);
query.setParameter("now", new LocalDateTime());
return query.list();
這將工作(鍵入明確設置)
Query query = session.createQuery(hql);
query.setParameter("now", new LocalDateTime(), Hibernate.custom(LocalDateTimeType.class));
return query.list();
這也將工作(使用java.util.Date)
Query query = session.createQuery(hql);
query.setParameter("now", new Date());
return query.list();
有我可以通過任何方式讓Hibernate將LocalDateTime識別爲它可以在不需要記住的情況下即可處理的類型每次都明確傳入類型?
謝謝。
我想你已經誤解了這個問題。這不是關於屬性的自定義類型,而是當hibernate無法從運算符的另一端推斷出類型時,它會通過類來識別參數類型。開箱即可識別某些類型,但我看不到添加我自己的類型映射的方式,它可以重新使用。 – 2010-05-17 19:15:17