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

JPA OneToOne发现所有卡在回路中

云丰
2023-03-14

我有一个带有JPA的JavaRESTAPI。每当我创建一个实体时,我还希望创建另一个具有forgein键的实体。或者有人可以给我其他建议,我会非常感激,并从中学习=)当我成功创建一家公司时,它也会在数据库中创建一个文件实体,因此工作正常。但是,每当我在JPA存储库中执行findAll方法时,它都会给我一个我创建的公司的循环。这样地:

如果你需要更多的信息,请告诉我!

公司班

package nl.hulpvriend.dehulpvriend.company;
import javax.validation.constraints.NotNull;
import lombok.*;
import nl.hulpvriend.dehulpvriend.file.File;

import javax.persistence.*;
import javax.validation.constraints.Size;

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
public class Company {


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @NotNull
    private String email;

    @Column(unique = true)
    @NotNull(message = "The company name cannot be empty")
    @Size(max = 30, message = "Company name cannot be longer than 30 characters")
    private String name;

    @NotNull(message = "Company must contain a service type")
    @Enumerated(EnumType.STRING)
    private ServiceType serviceType;

    private double stars;

    private Integer pricePerHour;

    private String description;

    private String kvk;

    @OneToOne(mappedBy="company", cascade = CascadeType.ALL)
    private File file;


}

File.class

package nl.hulpvriend.dehulpvriend.file;

import lombok.*;
import nl.hulpvriend.dehulpvriend.company.Company;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

@AllArgsConstructor
@Getter
@Setter
@NoArgsConstructor
@Entity
@Data
public class File {

    @Id
    private Integer id;

    private String fileId;

    @OneToOne(fetch = FetchType.EAGER)
    @MapsId
    private Company company;

    @NotNull(message = "Must contain a data")
    @Lob
    private byte[] data;

    private String downloadUrl;

    private String fileName;

    private String fileType;

    public File(String fileName, String fileType, byte[] data) {
        this.fileName = fileName;
        this.fileType = fileType;
        this.data = data;
    }

}

共有1个答案

孙福
2023-03-14

将JsonIgnore添加到其中一个引用以中断循环:

例如在File类中:

@JsonIgnore
@OneToOne(fetch = FetchType.EAGER)
@MapsId
private Company company;
 类似资料:
  • 我似乎不明白为什么在双链接列表的末尾插入节点会陷入循环。它要么卡在循环中,要么是空指针。另外,我想知道在处理链表或任何数据结构时,公共节点是更好还是公共无效。

  • 我想用谷歌搜索一下,通过回溯来解决迷宫问题!我看到了这个算法:递归:解迷宫 这是: 查找路径(x,y) > 如果(x,y在迷宫外)返回false 如果(x,y是目标)返回true 如果(x,y未打开)返回false 将x、y标记为解决方案路径的一部分 if(FIND-PATH(x,y以北)=true)返回true if(FIND-PATH(x,y以东)=true)返回true 如果(FIND-PA

  • 我正在尝试实现discovery first spring cloud配置模式。这是我的客户端bootstrap.yml 配置取为ok,客户端启动但未在eureka注册 因此,当我查看eureka仪表板时,我只看到配置服务,而不是客户端应用程序。文档没有明确说明这不起作用(如果我理解正确的话)。 这是故意的吗?这是窃听器吗?是否有可能实现此设置?

  • 我无法从位于GitHub中的ConfigBeans(https://github.com/spring-cloud/spring-cloud-netflix/tree/master/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/Eureka)中调用一个属性来更改Eureka服务器的心跳和发现上下文

  • 问题内容: 据我所知,反射包中没有类型发现机制,该机制希望您已经具有要检查的类型或值的实例。 还有 其他 方法可以发现正在运行的go包中的所有导出类型(尤其是结构)吗? 这是我希望拥有的(但不存在): 最终目标是能够发现满足特定条件的程序包的所有结构,然后能够实例化这些结构的新实例。 顺便说一句,识别类型的注册功能对于我的用例 不是 有效的方法。 无论您是否认为这是一个好主意,这就是为什么我想要这

  • 我试图编写一个函数,打印从根节点到叶节点的所有路径。 按从根到叶的顺序打印节点 例如 对于此示例,2是根,1-3是叶。 这是我的简单代码,我找不到新行应该在哪里,因为当我在任何地方写printf(“\n”)时,它打印出疯狂的输出,所以我在这段代码中找不到问题。