使用hibernate从多个表中检索数据

时间:2012-08-25 09:17:16

标签: java hibernate queryover

我有两个表,即Library和Book

  • 在图书馆 - > lid,lname,laddress和Setbooks(盖子是主要的 键)
  • 在图书 - > bid,bname,bauthor(出价为主键)

即:图书馆 - 一对多 - >预订 我发现很难找到有图书的作者(bauthor)=“xyz”的图书馆名单。

我试过了这个问题:

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

但是得到错误:非法尝试在hibernate查询列表中取消引用集合

当我使用此查询时:

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

1 个答案:

答案 0 :(得分: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);
            }