我在编写hql语句时,报了一个错误org.hibernate.hql.internal.ast.QuerySyntaxException:: Unable to locate appropriate constructor on class ,但是的定位的大致原因是因为我写了一个Student类,对应的数据库的student表,表中有五个字段,id,name,gender,age,createTime,其中createTime比较特殊,是个Timestamp类型,然后我也写了个StudentDTO类,其中有三个参数的构造方法,id,name,createTime,最后我写的hql语句如下 :
select new StudentDTO(s.id,s.name,s.createTime) from Student s;
如果我把StudentDTO改为两个参数id,name就可以通过,看来问题出现在createTime上,查了资料,原来是Hibernate的hql在解析数据库中的timestamp类型时,解析成了Date类型。问题找到了,自然就可以解决了。
select new StudentDTO(s.id,s.name,s.createTime) from Student s;
如果我把StudentDTO改为两个参数id,name就可以通过,看来问题出现在createTime上,查了资料,原来是Hibernate的hql在解析数据库中的timestamp类型时,解析成了Date类型。问题找到了,自然就可以解决了。