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

如何在spring data jpa中使用实体图

牟华翰
2023-03-14

我开始学习使用实体图来减少N1问题。但我面临一个问题,findAll方法返回重复数据。

< code >人

@Entity
public class Person {
    @Id
    @GeneratedValue
    public long id;
    public String name;

    @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
    @JoinColumn(name = "department_id")
    @JsonIgnore
    public Department department;

部门

@Entity
@NamedEntityGraph(name = "department.p",attributeNodes = 
@NamedAttributeNode(value = "people"))
public class Department {
    @Id
    @GeneratedValue
    @Column(name = "department_id")
    private long id;

    private String name;

    @OneToMany(fetch = FetchType.LAZY,cascade = 
        CascadeType.ALL,mappedBy = "department")
    private List<Person> people = new ArrayList<>();

我创建一个departmentrepo

interface DepartmentRepository extends CrudRepository<Department,Long> {

@EntityGraph(value = "department.p", type = 
     EntityGraph.EntityGraphType.LOAD)
    List<Department> findAll();
}

pom.xml代码

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

我的代码出了什么问题?方法 findAll 都不能使用 EntityGraph?

共有1个答案

薄鸿远
2023-03-14
  • 方法 1:

我们可以使用DISTINCT关键字来删除重复数据

    < li >方法2:

我们可以使用集合集合。我发现了一种以hibernate形式删除重复数据的方法,这种方法给了我们一个为什么hibernate会创建重复数据的原因。

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

  • 我的项目中的三个模型对象(本文末尾的模型和存储库片段)之间确实存在关系。 当我调用时,它会触发三个select查询: (“sql”) (对我来说)那是相当不寻常的行为。在阅读Hibernate文档后,我认为它应该始终使用连接查询。当类中的更改为时,查询没有区别(使用附加选择进行查询),当更改为时,城市类的查询也一样(使用JOIN进行查询)。 当我使用抑制火灾时,有两种选择: 我的目标是在所有情况下

  • 如何使用Spring Rest Controller和Spring Data JPA仅更新从@刚体传递的实体属性? 员工实体: 服务类方法: 请求体: Hibernate更新查询: Spring Data JPA正在尝试将company_id设置为空以进行更新,即使我没有将其传递给请求体?但是如果我从数据库中得到实体,使用employee_id传递,然后如果我试图保存(),那么它的工作正常。 我想

  • 问题内容: 我有两个字体文件,例如:FONT-light和FONT-bold。两者都来自@ font- face工具包,因此每个版本都包含5个字体文件(OGV,TTF,WOFF,EOT)。 要从精简版本转到粗体版本,我必须使用然后。我想使用和代替,因为我需要它到CSS3过渡。我该如何实现? 问题答案: @font-face { font-family: ‘DroidSerif’; src: url

  • 我正在学习一些fullstack的东西。我创建了一个JHipster项目,并创建了一个名为Post的实体,其中有几个字段,比如主题、正文和文章作者的姓名。模型正在运行,我可以添加新帖子。问题是我想把实体放在主页上的一个块中,就像博客一样。这是我的主页: 这是我的组件。ts 函数loadAll()来自一个教程,在版本4中是一个角度,我的是9,它不工作。我添加了一个类响应包装器,但我不确定应该放什么,

  • SpringDataJpa中 Specification怎样使用in查询 实体类Menu.java如下 想通过roles属性做in查询,代码如下 错误如下: Parameter value [com.appmtce.pojo.entity.role.Role@20f81e2a] did not match expected type [java.util.Collection (n/a)] 我的S