首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在SpringDataJpa @QueryHint注释中指定fetchgraph/loadgraph

是否可以在SpringDataJpa @QueryHint注释中指定fetchgraph/loadgraph
EN

Stack Overflow用户
提问于 2021-05-22 12:59:51
回答 1查看 31关注 0票数 0

是否可以在Spring Data Jpa中使用@QueryHint指定javax.persistence.fetchgraphjavax.persistence.loadgraph

我有一个实体图

代码语言:javascript
复制
@Entity
@NamedEntityGraph(
        name = "shop_with_all_associations",
        includeAllAttributes = true
)
public class Shop {    
    @JoinColumn(name = "shop_id")
    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private List<Member> members = new ArrayList<>();
}

以及存储库中相应的方法

代码语言:javascript
复制
@Repository
public interface ShopRepository extends JpaRepository<Shop, Integer> {
    @QueryHints({@QueryHint(name = "javax.persistence.fetchgraph", value = "shop_with_all_associations")})
    List<Shop> getAllWithQueryHintBy();
}
EN

回答 1

Stack Overflow用户

发布于 2021-05-22 12:59:51

不,这不可能。您可以检查日志,并在调用该方法时查看下一个警告

代码语言:javascript
复制
o.h.q.internal.AbstractProducedQuery     : The javax.persistence.fetchgraph hint was set, but the value was not an EntityGraph!

在AbstractProducedQuery类中,下一个代码部分显示,只有RootGraph的实例可以被视为EntityGraph。但是我们的@QueryHint只允许将字符串作为值传递。

代码语言:javascript
复制
else if ( HINT_FETCHGRAPH.equals( hintName ) || HINT_LOADGRAPH.equals( hintName ) ) {
                if ( value instanceof RootGraph ) {
                    applyGraph( (RootGraph) value, GraphSemantic.fromJpaHintName( hintName ) );
                    applyEntityGraphQueryHint( new EntityGraphQueryHint( hintName, (RootGraphImpl) value ) );
                }
                else {
                    MSG_LOGGER.warnf( "The %s hint was set, but the value was not an EntityGraph!", hintName );
                }
                applied = true;
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67646264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档