2011-12-14 2 views
0

에 의해로드되었습니다. 사용자 정의 sql을 통해로드 될 클래스의 bag 콜렉션을 얻으려고 시도 할 때 몇 가지 문제점이 있습니다. 다음은 내 수업Hibernate 컬렉션이 사용자 정의 SQL

<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> 

을 위해 내가 가지고있는 XML 매핑입니다하지만 응용 프로그램을 실행하면 오류 얻을 다음 buildSessionFactory 단계에서 org.hibernate.HibernateException: Errors in named queries: rolesQuery을. 이 매핑의 잘못된 점을 알려주시겠습니까? 내가 함께하고 <sql-query> 내부의 <return> 태그없이 모두 시도했지만 내가 오류를 발견

답변

0

여전히 작동하지 않습니다 ... 사용자 정의 쿼리 정의 내부의 라인 <load-collection alias="ruoli" role="alekso.npe.model.Ruolo" ></load-collection> 오류를 제공합니다. 그 라인이 없으면, 모든 것이 잘 작동합니다 (거의 ... lazy = "false"를 사방에 설정하더라도 롤 컬렉션은 거의로드되지 않습니다). 하지만 제가 삭제 한 라인은 문서에 나와 있습니다. 그래서 그것이 틀린 이유를 알고 싶습니다. 다른 질문에 대한 힌트를 드리겠습니다.

+0

게으른로드 문제에 대한 통찰력을 찾으십시오. – jbird

관련 문제