Java JPA 2.0 CriteriaQuery对@ManyToMany中具有JoinTable和Lazy Fetch的表的查询
我在@manytomy关系中有两个实体,如下所示: 如果查询是: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
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();