在Spring Data JPA中命名实体图JOINS结果(需要不同的选项)

Boj*_*vic 8 java spring hibernate jpa

我正在使用@NamedEntityGraph注释从数据库加载图表.

@NamedEntityGraph(
    name = "Firma.uredjivanje",
    attributeNodes = {
            @NamedAttributeNode(value="prevodi", subgraph = "prevodi")
    },
    subgraphs = {
            @NamedSubgraph(
                    name = "prevodi",
                    attributeNodes = {
                            @NamedAttributeNode(value = "jezik", subgraph = "jezik")
                    }
            )
    }
)
Run Code Online (Sandbox Code Playgroud)

在Spring Data JPA存储库中,我使用的是注释:

@EntityGraph(value="Firma.uredjivanje", type = EntityGraph.EntityGraphType.LOAD)
List<Firma> getByAktivna(boolean aktivna);
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作,期望所有关系都加入,我得到重复的Firma实体(因为JOIN).我得到{1,1,1,2,2,3}而不是实体ID为{1,2,3}的List.

获取不同实体的最佳方法是什么(如果这不是一个错误的话).

Boj*_*vic 9

找到答案...由于NamedEntityGraph在数据库中执行JOIN,它会选择没有DISTINCT的所有实体.因此解决方案是在方法名称中使用Distinct ...

@EntityGraph(value="Firma.uredjivanje", type = EntityGraph.EntityGraphType.LOAD)
List<Firma> getDistinctByAktivna(boolean aktivna);
Run Code Online (Sandbox Code Playgroud)