今天使用Hibernate操作時,查詢的操作也出現了這個錯誤,百思不得解,最後在網上找到了結局辦法,應該算不上辦法,就是原因。
首先我使用的hql語句如下
String hql="select new PO(。。。。) from 。。。";
出現這個錯誤,很大程度上是由於時間格式引起的,原因如下
1、在oracle中,使用Hibernate查詢返回的時間是java.util.Date的。
2、使用Struts1時,前臺的時間插件之類的在form裏一定要是String的,否則會報錯。
3、使用BeanUtils.copyProperties方法時,form裏的String時間只能轉換爲java.sql.Date類型的。
4、由於3的原因,造成了Po實體類的時間類型要爲java.sql.Date類型的。
5、Oracle返回java.util.Date,PO是java.sql.Date,於是問題就出現了。
目前的解決辦法就是在構造方法中進行轉換,還有一種方法就是自己實現String到java.util.Date之間的轉換,不過我現在做的是一個老項目,之前有很多代碼,萬一改錯了就麻煩了,所以採用構造方法中轉換還是相對穩妥一些。
不得不吐槽一下,我們項目中的大多數問題,基本上是跟數據庫有關的時間類型引起的,還有就是項目中的jar包衝突。。。