Java 列表/集合上的JPA获取联接筛选器
我在JPA(Hibernate)获取连接上遇到问题: 这是我的JPQL查询Java 列表/集合上的JPA获取联接筛选器,java,hibernate,orm,jpa,jpql,Java,Hibernate,Orm,Jpa,Jpql,我在JPA(Hibernate)获取连接上遇到问题: 这是我的JPQL查询 选择n从新闻n左连接获取n.profiles作为pr,其中pr.id=?1 但它不起作用。我如何进行查询以筛选正在获取的列表?根据规范,您尝试执行的操作是不允许的(至少JPA不允许)。根据JPA 1.0规范: 4.4.5.3提取连接 FETCH联接可用于获取数据 作为药物副作用的关联 执行查询。获取连接是 在实体及其子实体上指定 相关实体 获取联接的语法为 fetch_join ::= [ LEFT [OUTER]
选择n从新闻n左连接获取n.profiles作为pr,其中pr.id=?1
但它不起作用。我如何进行查询以筛选正在获取的列表?根据规范,您尝试执行的操作是不允许的(至少JPA不允许)。根据JPA 1.0规范: 4.4.5.3提取连接 FETCH联接可用于获取数据 作为药物副作用的关联 执行查询。获取连接是 在实体及其子实体上指定 相关实体 获取联接的语法为
fetch_join ::= [ LEFT [OUTER] | INNER ] JOIN FETCH join_association_path_expression
所引用的关联
FETCH JOIN子句的右侧
必须是属于的关联
作为结果返回的实体
查询的最后一步不允许这样做
指定的标识变量
右侧引用的实体
FETCH JOIN子句的一侧,以及
因此,隐式地引用
无法显示获取的实体
查询中的其他位置。
因此,以下措施应该有效:
SELECT n FROM News n LEFT JOIN n.profiles p WHERE p.id = ?1
但您不能在此处使用获取联接。请尝试以下方法:
SELECT n FROM News n LEFT JOIN FETCH n.profiles AS pr WITH (pr.id=?1)
你能发布
新闻课程代码吗?另请参见:;简短总结:-JPA规范不允许使用别名进行连接获取-hibernate不会抱怨,如果使用别名进行连接获取-使用别名进行连接获取,您可以轻松地击中自己的脚