使用NamedNativeQuery时是否可以设置namedEntityGraph?
我按如下方式获取用户实体:
try {
return (User) em.createNamedQuery("OAuthToken.getUser")
.setParameter("token", accessToken)
.setParameter("expirationInterval", expirationInterval)
.setHint("javax.persistence.fetchgraph", "User.withProjectsMemberOf")
.getSingleResult();
} catch (NoResultException e) {
return null;
}
entityGraph:
@NamedEntityGraphs({
@NamedEntityGraph(name = "User.withProjectsMemberOf",
attributeNodes = @NamedAttributeNode("projectsMemberOf")),
})
但是我收到以下警告:
设置了javax.persistence.fetchgraph提示,但该值不是EntityGraph!
那么可以使用命名的本机查询设置实体图吗?
我目前正在为过滤器中的当前REST请求设置用户。我希望能够根据匹配资源方法中存在的注释为用户动态获取entityGraph。
我使用的是spring-data-jpa,hibernate和jersey
答案 0 :(得分:1)
您需要实例化EntityGraph
,就像这样
EntityGraph myEG = em.getEntityGraph("User.withProjectsMemberOf");
然后设置fetchgraph,就像这样
query.setHint("javax.persistence.fetchgraph", myEG);