论坛首页 入门技术论坛

hibernate实体hbm的配置中,可否把一个查询的结果绑定为一个实体的属性

浏览 2770 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-27  
有个问题,hibernate实体hbm的配置问题:
可否把一个查询的结果绑定为一个实体的属性。
例如:
<class name="test" table="test">
<id name="id"><generator class="native"/></id>
<property name="field1" type="string"/>
<property name="field2" type="string"/>

<!-- 想根据field1,field2这两个值查询一个结果集,绑定到本对象的一个list集合上,行吗?-->
<list name="mySearchLit">
<!-- some query like:select * from test2 a where a.field1=field1 and a.field2=field2  -->
<l i st>
</class>

   发表时间:2007-08-27  
一般情况下在实体外边做这个查询当然非常简单。但是我有特殊地方需要在实体内部做这个绑定list

为什么要绑定呢?
这样做关系,相互包含的时候不会死循环导致堆栈溢出吗?

因为需要根据实体属性来查询结果集,所以在实体上绑定这个查询用起来会方便些。
0 请登录后投票
   发表时间:2007-08-28  
命名查询与对象集合绑定可以解决此问题:
<class name="Organization" lazy="true">
    <id name="id" unsaved-value="0">
        <generator class="increment"/>
    </id>
    <property name="name" not-null="true"/>
    <set name="employments"
        lazy="true"
        inverse="true">
        <key column="employer"/> 
        <one-to-many class="Employment"/>
        <loader query-ref="organizationEmployments"/>
    </set>
    <loader query-ref="organization"/>
</class>


<sql-query name="organizationEmployments">
    <return alias="empcol" collection="Organization.employments"/>
    <return alias="emp" class="Employment"/>
    SELECT {empcol.*},
        EMPLOYER AS {emp.employer}, EMPLOYEE AS {emp.employee},
        STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},
        REGIONCODE as {emp.regionCode}, ID AS {emp.id}
    FROM EMPLOYMENT empcol
    WHERE EMPLOYER = :id AND DELETED_DATETIME IS NULL
</sql-query>
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics