在hql中选择查询

时间:2017-08-10 13:39:29

标签: hibernate select hql

我的数据库中有一个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

我错过了什么?

1 个答案:

答案 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]);
    }

代码未经过测试,因此可能有些错误,但逻辑就在那里。