Spring Data JPA中的命名实体图JOINS结果(需要不同的选项) [英] Named entity graph JOINS results (need distinct option) in Spring Data JPA
问题描述
@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屋!