java - HQL 查询从错误的类中获取属性

标签 java hibernate hql hibernate-mapping

我正在尝试执行以下查询:

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 中。这是我的 hibernate 映射:

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

有人知道这里出了什么问题吗?

提前致谢

最佳答案

尝试对角色进行另一次显式联接。

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

关于java - HQL 查询从错误的类中获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42490147/

相关文章:

java - Maven项目: Java class does not get displayed as Java source?

java - 与反编译器相比,Java 代码混淆真的有效吗?

java - Spring 数据 jpa。如果没有结果返回默认值,则查找最大值

hibernate - HQL按集合项属性值之和排序

mysql - HQL:子查询返回多于1行

java - 我需要什么图形库来运行 java?

java - 如何获取执行的.jar文件的路径?

java - 问题: Java. util.date在 hibernate 中不允许重复的日期值

java - Hibernate:无法从底层数据库获取连接

mysql - 如何将值传递给hibernate的sqlRestriction?