出現Unable to locate appropriate constructor on class解決方案

今天使用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包衝突。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章