当前位置: 首页 > 知识库问答 >
问题:

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

宁锐
2023-03-14

我正在使用@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实体(因为连接)。我得到的不是实体id为{1,2,3}的列表,而是{1,1,1,2,2,3}。

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

共有2个答案

夹谷晋
2023-03-14

添加字典后,我在服务器starup期间有错误日志(也许是因为没有findDistinctAll()这样的东西。

给我一个提示https://jira.spring.io/browse/DATAJPA-680.

我在方法中添加了@Query注释,所以我的方法如下所示

@EntityGraph(value = "User.detail", type = EntityGraph.EntityGraphType.LOAD)
@Query(value = "SELECT DISTINCT u FROM User u")
List<User> findAll();
李法
2023-03-14

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

@EntityGraph(value="Firma.uredjivanje", type = EntityGraph.EntityGraphType.LOAD)
List<Firma> getDistinctByAktivna(boolean aktivna);
 类似资料:
  • 我最近发现了命名实体图,我正试图以一种干净、干燥的方式实现它们。 我不确定的是(通过JPA和Spring数据文档阅读还没有回答)使用的名称的范围。是它们所定义的类的私有,还是我可以这样做: 车站在哪里。Route中的深子图是指Stop中的命名实体图。 谢谢!

  • 我是JPA 2.1的新手,最近才开始使用命名实体图。对于我的项目,我正在JPA 2.1中映射以下关系: 顺序 我想指示JPA加入并正确获取所有需要的数据。到目前为止,这对订单来说完美无缺 - 以下是我的实体(省略了getter和setter): 次序 订单明细 产品 产品线

  • 我目前正在开发一个具有核心模块和不同“扩展”模块的应用程序。核心模块包括基于Spring配置类的JPA配置以及一些“基本”实体及其存储库,这些实体和存储库将在“扩展”模块中使用。扩展模块包含额外的实体类和JPARepositories。启动扩展模块的JUnit测试时,我遇到以下错误: 为了做到这一点,我尝试了三种不同的方法: 创建了一个名为coreEntityManager和setPackages

  • 问题内容: 这仅返回结果,我需要返回全部89%。有任何想法如何做吗? 问题答案: 简单的解决方案: 更漂亮的解决方案: 最漂亮的解决方案:

  • 当我运行方法时,结果1和2是相同的,我需要结果是不同的数据集,因为我通过不同的数据集。 这是我目前所掌握的。 而主要的方法代码是: 结果在两个相同的数据集[100.0,200.0,300.0]时打印stat1和stat。 我需要stat 1为10.0、20.0、30.0和stat 2为100.0、200.0、300.0 我试图改变…的命令 至 但这给了我同样的结果。我如何解决这个问题?

  • 问题内容: 我是JPA 2.1的新手,仅开始使用最近命名的实体图。对于我的项目,我正在JPA 2.1中映射以下关系: 订单- > OrderDetail->产品-> ProductLine 我想指示JPA加入并正确获取所有需要的数据。到目前为止,这对于 Order- > OrderDetail-> Product来说 是完美的,但是到目前为止,我还没有添加一个Sub-Sub Graph来深入到Pr