出现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包冲突。。。

你可能感兴趣的:(HQL,String,Class,解决方案)