我的数据库中有一个Vendor
类与Query q = s.createQuery("from Vendor ");
java.util.Iterator itr = q.iterate();
while (itr.hasNext()) {
Vendor v = (Vendor) itr.next();
System.out.println(v.getVendor Id() + " " + v.getVendorName() + " " + v.getVendorRating());
表对应,我想从该表中检索数据。当我使用它时:
select
工作正常。但是当我想使用Query q = s.createQuery("select v.vendorId, v.vendorName, v.venderRating from Vendor v");
Iterator itr = q.iterate();
while (itr.hasNext()) {
Vendor v = (Vendor) itr.next();
System.out.println(v.getVendorId() + " " + v.getVendorName() + " " + v.getVendorRating());
}
查询做同样的事情时:
{{1}}
引发错误:
线程中的异常" main" java.lang.ClassCastException: [Ljava.lang.Object;无法施展 com.apple.hibernate.vendor.Vendor
我错过了什么?
答案 0 :(得分:0)
"select v.vendorId, v.vendorName, v.venderRating from Vendor v"
不会返回供应商对象,而是返回Object[]
,数组中的每个项目都是一列。
在你的情况下,它应该是这样的:
Query q = s.createQuery("select v.vendorId, v.vendorName, v.venderRating from Vendor v");
Iterator itr = q.iterate();
while (itr.hasNext()) {
Object[] v = (Object[]) itr.next();
System.out.println(v[0] + " " + v[1] + " " + v[2]);
}
代码未经过测试,因此可能有些错误,但逻辑就在那里。