由自定义SQL加载的Hibernate集合

时间:2011-12-14 17:30:32

标签: sql hibernate hibernate-mapping

我在尝试通过自定义sql加载类的包集合时遇到了一些问题。 这是我为班级设置的xml映射

<hibernate-mapping>
<class name="alekso.npe.model.Utente" table="VNPEZZ_UTE_MAT" lazy="false">
    <id name="matricola" column="C_UTE_MAT">             
    </id>       
    <property name="nome" column="T_NOM" />
    <property name="cognome" column="T_COG" />
    <property name="email" column="T_EML" />

    <bag name="ruoli" table="VNPEZX_UTE_APP_TRN" 
        inverse="false" lazy="true" fetch="select" cascade="all" >
        <key column="C_UTE_MAT" />
        <one-to-many class="alekso.npe.model.Ruolo" />
        <loader query-ref="rolesQuery"/>
    </bag>
</class>
    <class name="alekso.npe.model.Ruolo" table="VNPEZH_TIP_USR"
    lazy="false" where="C_APP = 'NPE'">
    <id name="codice" column="C_TIP_USR">            
    </id>   
    <property name="nome" column="T_DES_TIP_USR"/>      

</class>
<sql-query name="rolesQuery">
    <return alias="role" class="alekso.npe.model.Ruolo"></return>
    <load-collection alias="ruoli" role="alekso.npe.model.Ruolo" ></load-collection>
    <![CDATA[select {ruolo.*}
    from NPEA.vnpezx_ute_app_trn permesso join NPEA.vnpezh_tip_usr ruolo
      on ruolo.c_tip_usr = permesso.c_tip_usr
      where permesso.c_app = 'NPE'
      and permesso.c_ute_mat = :matricola ]]>
</sql-query>
</hibernate-mapping>

但是当我运行应用程序时出现错误: buildSessionFactory阶段中的org.hibernate.HibernateException: Errors in named queries: rolesQuery。 你能告诉我这个映射有什么问题吗? 我在<return>内使用和不使用<sql-query>标记尝试过,但仍然无法正常工作

1 个答案:

答案 0 :(得分:0)

我发现了错误...自定义查询定义中的行<load-collection alias="ruoli" role="alekso.npe.model.Ruolo" ></load-collection>给出了错误。 没有那条线,一切都运行良好(差不多......即使我设置懒惰=&#34;假&#34;无处不在,角色集合也是懒惰的)。 但我删除的那一行是在文档上,所以我想知道它为什么是错的。 我将问题留给其他人提供一些暗示。