Spring Data JPA中的命名实体图JOINS结果(需要不同的选项) [英] Named entity graph JOINS results (need distinct option) in Spring Data JPA

查看:147
本文介绍了Spring Data JPA中的命名实体图JOINS结果(需要不同的选项)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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





$ b

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

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

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



什么是最好的(如果这不是错误的课程)。

解决方案

找到答案...由于NamedEntityGraph确实JOIN在数据库中,它选择所有没有DISTINCT的实体。所以解决方法是在方法名中使用Distinct ...

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


I'm using @NamedEntityGraph annotation to load a graph from database.

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

In the Spring Data JPA repository, I'm using annotation:

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

Everything works as expected, expect that all relations are joined, and I get duplicate Firma entities (because of JOIN). Instead of a List with entity id's {1,2,3}, I get {1,1,1,2,2,3}.

What is the best way to get distinct entities (if this is not a bug ofcourse).

解决方案

Found the answer... Since NamedEntityGraph does JOIN in database, it selects all entities without DISTINCT. So the solution is to use Distinct in method name...

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

这篇关于Spring Data JPA中的命名实体图JOINS结果(需要不同的选项)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆