0

我有 2 张桌子,即图书馆和书本

  • 在 Library ->lid , lname,laddress 和 Setbooks 中(lid 是主键)
  • 在 Books->bid,bname,bauthor(bid 是主键)

即:图书馆--一对多-->图书 我在检索具有作者(bauthor)=“xyz”的图书的图书馆列表时遇到了困难。

我试过这个查询:

query=session.createQuery("from Library as l where l.books.bauthor="xyz");

但出现错误:非法尝试取消引用休眠查询列表中的集合

当我使用这个查询时:

query=session.createQuery("from Library as l inner join l.books b where b.bauthor="xyz");
List<Library>list=query.list();

我得到正确的没有。书,但当我试图检索(Library l=list.get(0);or Library l=(Library)list.get(0))

我收到错误: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.demo.Library

4

1 回答 1

0

您正在获取图书馆和书籍类型列表,因此您只能获得一种类型记录

Query query = session.createSQLQuery(sql);
            records = query.list();
            for (Object[] fields : records) {
                Library view = new Library();
                view.setId(StringUtils.toString(fields[1]));
                view.setLName(StringUtils.toString(fields[0]));
                list.add(view);
            }
于 2012-08-25T09:26:53.677 回答