我正在使用@NamedEntityGraph批注从数据库加载图。

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

在Spring Data JPA存储库中,我使用的是注释:
@EntityGraph(value="Firma.uredjivanje", type = EntityGraph.EntityGraphType.LOAD)
List<Firma> getByAktivna(boolean aktivna);

一切都按预期工作,期望所有关系都被加入,并且我得到了重复的Firma实体(由于JOIN)。我得到的是{1,1,1,2,2,3},而不是实体ID为{1,2,3}的列表。

获取独立实体的最佳方法是什么(如果这不是类(class)中的错误)。

最佳答案

找到了答案...由于NamedEntityGraph在数据库中进行了JOIN操作,因此它将选择所有不具有DISTINCT的实体。所以解决方案是在方法名称中使用Distinct ...

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

09-26 20:27