Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA 2.0 CriteriaQuery对@ManyToMany中具有JoinTable和Lazy Fetch的表的查询_Java_Jpa 2.0_Criteria Api - Fatal编程技术网

Java JPA 2.0 CriteriaQuery对@ManyToMany中具有JoinTable和Lazy Fetch的表的查询

Java JPA 2.0 CriteriaQuery对@ManyToMany中具有JoinTable和Lazy Fetch的表的查询,java,jpa-2.0,criteria-api,Java,Jpa 2.0,Criteria Api,我在@manytomy关系中有两个实体,如下所示: 如果查询是: List<Role> roles = session.createQuery("select u.roles from User u left join fetch u.roles where u.id= :idParam"). setParameter("idParam", param). asList(); List roles=session.createQuery(“从用户u中选择u.ro

我在@manytomy关系中有两个实体,如下所示:

如果查询是:

List<Role> roles = session.createQuery("select u.roles from User u left join fetch u.roles where u.id= :idParam").
     setParameter("idParam", param).
     asList();
List roles=session.createQuery(“从用户u中选择u.roles左连接获取u.roles,其中u.id=:idParam”)。
setParameter(“idParam”,参数)。
asList();
我记得,以下标准应该有效:

List<Role> roles = session.
    createCriteria(Role.class).
    add(Restrictions.eq("users.id", param)).
    setFetchMode("users", FethchMode.EAGER).
    list();
列出角色=会话。
createCriteria(Role.class)。
添加(Restrictions.eq(“users.id”,param))。
setFetchMode(“用户”,FethchMode.EAGER)。
list();
否则,返回一个具有非实体结构的查询,可能需要一个ResultTransformer。

如果查询是:

List<Role> roles = session.createQuery("select u.roles from User u left join fetch u.roles where u.id= :idParam").
     setParameter("idParam", param).
     asList();
List roles=session.createQuery(“从用户u中选择u.roles左连接获取u.roles,其中u.id=:idParam”)。
setParameter(“idParam”,参数)。
asList();
我记得,以下标准应该有效:

List<Role> roles = session.
    createCriteria(Role.class).
    add(Restrictions.eq("users.id", param)).
    setFetchMode("users", FethchMode.EAGER).
    list();
列出角色=会话。
createCriteria(Role.class)。
添加(Restrictions.eq(“users.id”,param))。
setFetchMode(“用户”,FethchMode.EAGER)。
list();

否则,如果您返回一个非实体结构的查询,您可能需要一个ResultTransformer。

如果我误解了问题,或者您无法接受答案,请通知我。如果我误解了问题,或者你不能接受答案,请通知我。我将很快澄清并修复它。查询将返回用户没有的角色。我需要JPA2.0模式下的代码(使用CriteriaQuery、CriteriaBuilder、Root等等),而不是Hibernate代码。在你写的问题“查找id指定的用户角色”中,不是“没有”。我正在研究它,但在这种情况下它可能不会变慢,我没有直接使用JPA CriteriaBuilder API。你想干什么?我在
criteriabuilder
中找到了一个
isNotMember
,它可能会工作。Azendh,很抱歉出错。查询应该返回用户没有的角色。我需要JPA2.0模式下的代码(使用CriteriaQuery、CriteriaBuilder、Root等等),而不是Hibernate代码。在你写的问题“查找id指定的用户角色”中,不是“没有”。我正在研究它,但在这种情况下它可能不会变慢,我没有直接使用JPA CriteriaBuilder API。你想干什么?我在
criteriabuilder
中找到了一个
isNotMember
,它可能会工作。Azendh,很抱歉出错。
List<Role> roles = session.
    createCriteria(Role.class).
    add(Restrictions.eq("users.id", param)).
    setFetchMode("users", FethchMode.EAGER).
    list();