java - JPA OneToMany、ManyToOne 关系的无限递归引用

标签 java jpa recursion

我在下面创建了一些域。

@Entity
public class Conference {

    ...

    @OneToMany(
        targetEntity = ProgramDate.class,
        mappedBy = "conference",
        cascade = CascadeType.REMOVE,
        fetch = FetchType.EAGER
     )
     @JsonBackReference
     private List<ProgramDate> programDateList;
}

@Entity
public class Program {

    ...

    @ManyToOne
    @JoinColumn(name = "program_date_id")
    @JsonBackReference
    private ProgramDate date;

    @ManyToOne
    @JoinColumn(name = "room_id")
    private Room room;
    ...
}

@Entity
public class ProgramDate {

    ...

    @OneToMany(
            targetEntity = Program.class,
            mappedBy = "date",
            fetch = FetchType.EAGER
    )
    @JsonBackReference
    private List<Program> programList;

    @ManyToOne
    @JoinColumn(name = "conference_id")
    private Conference conference;
}

@Entity
public class Room {

        ...

    @OneToMany(
            targetEntity = Program.class,
            mappedBy = "room",
            fetch = FetchType.EAGER
    )
    @JsonBackReference
    private List<Program> programList;
}

我制作了像下面的代码一样的 freemarker。

     <#list conference.programDateList as date>
        ...
     </#list>

我遇到一个问题,即 JPA OneToMany、ManyToOne 关系的无限递归引用。我尝试添加 @JsonBackReference,但它只解决了 json 递归问题。

enter image description here

最佳答案

使用 json 忽略注释:

@OneToMany(
        targetEntity = Program.class,
        mappedBy = "date",
        fetch = FetchType.EAGER
)
@JsonIgnore
private List<Program> programList;

关于java - JPA OneToMany、ManyToOne 关系的无限递归引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36845258/

相关文章:

java - Java 中的并行处理;需要建议,即在 Runnanble/Callable 接口(interface)上

java - 在 JavaFX 应用程序中将 Spring Security 附加功能与 Spring Boot 结合使用

java - Spring @Transactional 在类上与在方法上

c++ - 被间接乘法算法困扰

c# - 异步递归方法

java - 将哈希表保存在持久存储中

postgresql - Spring Boot 无法创建数据库模式

java - JPA空对象

function - 如果范围内的数字总和等于 1,则对数字进行分组

java - 将类参数从 Java 转换为 Scala