这种写法是hibernateQL里面专门用来方便用户直接创建对象的写法,以前用过多次,是没有问题的,报错主要是hibernate认为找不到对应的方法,也就是返回值的类型和我构造方法的对象类型不符,因此报错,现在我就不知道到底返回值的类型是什么 打断点试试,正常应该返回的是Object[] 这个是这样的,比如你写 select new com.xxx.AAA(a.id,b.id) from ATable a, BTable b where a.xx = b.xx; 这样的语句可以很容易构造出一个列表,列表的每一个对象都是AAA的对象,AAA要求有一个构造函数,像这样public AAA(String id1, String id2),你可以试一下,这样可以很方便的构造对象,不用查询出一个循环列表再把每一个内容拿出来,再依次构造对象,然后再加入到列表中,hibernate在底层都帮我们处理完了。我现在遇到的问题是当使用hibernate函数来作为参数构造这个对象时,遇到参数类型不符的错误,不知道该怎么处理
我还是回答你的问题吧,正常查询返回的数据里,如果你查询的是一个对象,那么返回的是这个对象的集合, List里封装的是那个对象类,如果你查询的是几个字段,即使这几个字段在一个对象里,返回的也不是这个对象,而是一个Object[],就是一个Object数组,如果有多条,List里装的就是多个Object数组,楼主取的时候,要强转成Object[],然后具体里边是什么类型,你可以根据你的查询动态的进行类型转换,具体的自己调试的时候看看吧
打断点试试,正常应该返回的是Object[]
打断点试试,正常应该返回的是Object[]
这个是这样的,比如你写 select new com.xxx.AAA(a.id,b.id) from ATable a, BTable b where a.xx = b.xx;
这样的语句可以很容易构造出一个列表,列表的每一个对象都是AAA的对象,AAA要求有一个构造函数,像这样public AAA(String id1, String id2),你可以试一下,这样可以很方便的构造对象,不用查询出一个循环列表再把每一个内容拿出来,再依次构造对象,然后再加入到列表中,hibernate在底层都帮我们处理完了。我现在遇到的问题是当使用hibernate函数来作为参数构造这个对象时,遇到参数类型不符的错误,不知道该怎么处理