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

JPA双向Onetomany json无止境循环

令狐宜民
2023-03-14

此特定环境下的程序:EJB3.0 JPA jersey Web Service

第一个实体:

@Entity
@Table(name = "student_by_test_yao")

public class StudentTest implements Serializable {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;

    @ManyToOne
    @JoinColumn(name = "class_id")
    private ClassTest classes;

    public StudentTest() {}
}

第二实体:

@Entity
@Table(name = "class_by_test_yao")
public class ClassTest implements Serializable{
    @Id
    @GeneratedValue
    private Integer id;
    private String name;

    @OneToMany(mappedBy = "classes",cascade = CascadeType.ALL, fetch=FetchType.EAGER)
    private List<StudentTest> students;

    public ClassTest() {}
}

当我拿到班级考试的学生名单时。例外情况是:

com.fasterxml.jackson.databind.JsonMappingException:
Infinite recursion (StackOverflowError)

如果我更改fetch FetchType。懒惰例外情况是:

org.hibernate.LazyInitializationException: 
failed to lazily initialize a collection of role: 
cn.gomro.mid.core.biz.goods.test.ClassTest.students, 
could not initialize proxy - no Session

如何解决我的问题?

共有3个答案

梁鸣
2023-03-14

对于双向关系,可以使用以下注释:

父级为@JsonManagedAudi,子级为@JsonBackAudi。

此外,此链接可能会有所帮助:杰克逊-双向关系

卜季萌
2023-03-14

尝试向其中一个字段添加@JsonIgnore注释以避免循环

臧俊杰
2023-03-14
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userId")
private User user;

它真的有效。我刚刚在双向@ManyToOne映射上尝试过。它修复了

通用域名格式。fasterxml。杰克逊。数据绑定。JsonMappingException:无限递归(StackOverflowError)

 类似资料:
  • 我有此代码来验证用户输入。条件:输入的值只能是零或正数。不接受负值和字母字符。 这是我的代码,它一直在循环:

  • 本文向大家介绍双向链表和双向循环链表?相关面试题,主要包含被问及双向链表和双向循环链表?时的应答技巧和注意事项,需要的朋友参考一下 双向链表: 包含两个指针,一个prev指向前一个节点,一个next指向后一个节点。 双向循环链表: 最后一个节点的 next 指向head,而 head 的prev指向最后一个节点,构成一个环。

  • 我试图在用户和地址之间建立双向关系, 用户1-------->*地址 但是 地址1-------->1个用户 我在上网时得到了这些信息 > 对于一对一双向关系,拥有方对应于包含对应外键的方 双向关系的反向侧必须通过使用OneToOne、 OneToMany或ManyToMany批注的mappedBy元素来引用其 所属侧。mappedBy元素指定作为 关系所有者的实体中的属性或字段。 但如果我按照情

  • 双向循环链表 在“数据结构”课程中,如果创建某种数据结构的双循环链表,通常采用的办法是在这个数据结构的类型定义中有专门的成员变量 data, 并且加入两个指向该类型的指针next和prev。例如: typedef struct foo { ElemType data; struct foo *prev; struct foo *next; } foo_t; 双向循环链表的

  • 服务 我的主要方法 所以在这里,当我尝试在students表中添加学生时,它给出了一个错误,错误是Falling

  • 我试图在一个非常简单的Hibernate示例中填充一些实体对象。我的数据库由两个表组成,“Departments”(Id,Name)和“Employees”(Id,DepartmentsId,FirstName,LastName)。我的SQL查询只是员工到部门的左连接。 我已经按照Hibernate文档中的规定设置了注释,但每当我尝试序列化实体时,Hibernate就会进入一个无休止的循环,并最终