Spring 引导 JPA 一对一映射生成 StackOverflow 错误
Spring Boot JPA One-to-One mapping generates StackOverflow Error
尝试 运行 Spring-在 MySQL 上启动 JPA 并在此处严格按照本教程进行操作:https://spring.io/guides/gs/accessing-data-mysql/
一切如预期般顺利。
然而,我引入了一个新的实体即。用户的地址并建立了 1 对 1 的单向映射,应用程序开始抛出 Whosebug 错误 - 尽管映射是非常基本的,我已经在应用程序服务器(例如 GlassFish/Payara 5)上多次使用没有问题。
下面是映射:
在User
实体中
@OneToOne(mappedBy = "user", optional = false, cascade = CascadeType.ALL)
private Address address;
..关系的另一端,即 Address
:
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="USER_ID")
private User user;
预期:单行:{"id":1,"name":"First","email":"someemail@someemailprovider.com","address":{"id":2,"line1":"Line1","postcode":"PST CD","city":"City","state":"State","country":"IN"
实际:上面的行在控制台上打印了无数次,这是一个 Whosebug 错误。
如果你的意思是"Infinite recursion (WhosebugError)"。
您可能需要将@JsonIgnore 添加到映射参数(在您的一对一关系之上)以停止循环。
尝试 运行 Spring-在 MySQL 上启动 JPA 并在此处严格按照本教程进行操作:https://spring.io/guides/gs/accessing-data-mysql/ 一切如预期般顺利。
然而,我引入了一个新的实体即。用户的地址并建立了 1 对 1 的单向映射,应用程序开始抛出 Whosebug 错误 - 尽管映射是非常基本的,我已经在应用程序服务器(例如 GlassFish/Payara 5)上多次使用没有问题。
下面是映射:
在User
实体中
@OneToOne(mappedBy = "user", optional = false, cascade = CascadeType.ALL)
private Address address;
..关系的另一端,即 Address
:
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="USER_ID")
private User user;
预期:单行:{"id":1,"name":"First","email":"someemail@someemailprovider.com","address":{"id":2,"line1":"Line1","postcode":"PST CD","city":"City","state":"State","country":"IN"
实际:上面的行在控制台上打印了无数次,这是一个 Whosebug 错误。
如果你的意思是"Infinite recursion (WhosebugError)"。
您可能需要将@JsonIgnore 添加到映射参数(在您的一对一关系之上)以停止循环。