我找不到在QueryDSL中实现提取计划的任何方式,并且尝试了很多。你能给我任何提示吗?另外,您是否知道在不同情况下选择要提取的字段和延迟加载的更好的方法?我使用批量提取,因此无法使用JOIN FETCH。

最佳答案

使用这样的EntityGraph定义

@NamedEntityGraph(
    name = "post",
    attributeNodes = {
        @NamedAttributeNode("title"),
        @NamedAttributeNode(value = "comments", subgraph = "comments")
    },
    subgraphs = {
        @NamedSubgraph(
                name = "comments",
                attributeNodes = {
                    @NamedAttributeNode("content")}
        )
    }
)


可以在Querydsl查询中像这样激活EntityGraph实例

EntityGraph postGraph = em.getEntityGraph("post");
query.setHint("javax.persistence.fetchgraph", postGraph)


来源:http://hantsy.blogspot.fi/2013/12/jpa-21-entity-graph.html

10-06 16:18