【问题标题】:Hibernate createSQLQuery休眠创建SQL查询
【发布时间】:2012-01-26 22:09:39
【问题描述】:

我有 3 个表,它们之间没有任何关联,但表中的主键用作其他两个表中的列来检索数据。我是 hibernate 新手,还没有学会创建关联,但是我需要从 3 个表中查询数据并返回一个映射的对象类型。我正在使用 sql 查询来做到这一点:

Query q = session.createSQLQuery("select p.projectid, p.projecttitle, p.projectdescription from projects p join accounts a on p.accountid = a. accountid join addresses ad on ad.accountid = a.accountid where ad.zipcode=" + zipcode);

我尝试使用这条线:

List<Projects> projects = (List<Projects>)q.List();

转换它们,但它不起作用。

是否有任何方法可以将此查询返回的对象 (Lang.Object) 转换为映射的 Projects 对象?感谢您的帮助。

【问题讨论】:

  • 你见过addEntity 吗?也许在这里可以提供帮助......
  • 顺便说一句,您应该能够轻松地对这种关联进行建模并使用标准进行处理。项目有账户,账户有地址,地址有邮政编码。
  • “但它不起作用” - 它是否引发异常?还是什么都没有?
  • 为了使用 addEntity,我需要关联吗?
  • 抛出异常,Ljava.lang.object;无法转换为 Package.Projects。

标签: hibernate


【解决方案1】:
    List projects = q.List();

    for (Iterator iterator = projects.iterator(); iterator.hasNext();){

       Object[] row = (Object[]) iterator.next();
       Projects project = new Project();
       project.setName(row[0].toString());

       System.out.println("Project name: " + project.getName());         
    }

或者你也可以这样做

    List projects = q.List();

    for (Iterator iterator = projects.iterator(); iterator.hasNext();){

       Object[] row = (Object[]) iterator.next();
       Projects project = new Project(row[0].toString());
       System.out.println("Project name: " + project.getName());         
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多