如何使用Hibernate <subselect>:

Moh*_*han 6 hibernate

我是hibernate的新手.我需要了解以下问题:

(1)什么是hibernate映射中的subselect?

(2)如何在hbm文件中映射subselect?

(3)如果我使用subselect检索值,那么如何在java Action类中获取检索到的值.

Rya*_*ord 7

  1. 基于在给出的描述中部分5.1.3中,subselect元件被用来定义一个只读/不可变的,其是基于任意的本地查询的结果实体.
  2. 在同一个源中,只需subselectclass元素中使用而不是table属性,然后使用查询中定义的列名作为属性映射中的列名.(以下是第5.1.3节逐字记录)

    <class name="Summary">
      <subselect>
        select item.name, max(bid.amount), count(*)
        from item
        join bid on bid.item_id = item.id
        group by item.name
      </subselect>
      <synchronize table="item"/>
      <synchronize table="bid"/>
      <id name="name"/>
      ...
    </class>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用subselect元素中查询的列创建映射后,您应该能够像访问任何其他实体一样访问属性.


Luc*_*ira 2

实际上,您不需要对子选择建模,您可以创建使用它们的查询。检查: http: //docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-subqueries

(编辑:上面链接中的示例)

String hql = "from Cat as fatcat "+
             "where fatcat.weight > ( "+
             "  select avg(cat.weight) from DomesticCat cat "+
             ")";
List fatcats = session.createQuery(hql);
Run Code Online (Sandbox Code Playgroud)