簡體   English   中英

HQL查詢從錯誤的類獲取屬性

[英]HQL query take attribute from wrong class

我正在嘗試執行以下查詢:

returnValue = (Long) super.createQuery("Select Count(*) From User u Left Outer Join u.rolesRelated r "
                    + "Where r.role.id = :roleId And u.id = :userId")
                    .setParameter("userId", userId)
                    .setParameter("roleId", roleId)
                    .getSingleResult(); 

但是我得到這個錯誤:

 org.hibernate.QueryException: could not resolve property: role.id of: com.sp.common.core.model.User

該屬性不存在,因為role.id在user.rolesRelated中,而不在user中。 這是我的休眠映射:

<class name="com.sp.common.core.model.User" table="user">
/* more meaningless properties */
        <set cascade="all" name="rolesRelated" sort="unsorted" table="sec_rperfil_usuario"
            lazy="false" fetch="join">
            <key column="id_usuario" />
            <composite-element class="com.sp.common.core.model.UserRole">
                <many-to-one name="role" class="com.sp.common.core.model.Role"
                    column="id_perfil" cascade="none" lazy="false" fetch="join" />
            </composite-element>
        </set>
</class>

有人知道這是怎么回事嗎?

提前致謝

嘗試對Role進行另一個顯式聯接。

SELECT COUNT(*) FROM User u LEFT OUTER JOIN u.rolesRelated rr 
LEFT OUTER JOIN rr.role r WHERE r.id = :roleId And u.id = :userId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM