rest - 在没有 @JsonIgnore 的情况下使用休息服务后出错
问题描述
我有这个映射用户 *------------1 Sexe
用户类
public class User {
@ManyToOne
@JoinColumn(name="sexe_id")
private Sexe sexe;
// Rest of the Attributes
}
性别类
public class Sexe {
@OneToMany(mappedBy="sexe", fetch = FetchType.LAZY)
private List<User> users;
// Rest of the Attributes
}
和休息呼叫的控制器
@GetMapping("/users")
public List<User> getAllUsers()
{
System.out.println("Get all Users...");
List<User> users = new ArrayList<>();
userRepository.findAll().forEach(users::add);
return users;
}
使用邮递员后,我得到了这个异常:
at
com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
~[jackson-databind-2.9.6.jar:2.9.6] at
com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
~[jackson-databind-2.9.6.jar:2.9.6] at
com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
~[jackson-databind-2.9.6.jar:2.9.6] at
com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
~[jackson-databind-2.9.6.jar:2.9.6] at
com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
~[jackson-databind-2.9.6.jar:2.9.6] at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145)
~[jackson-databind-2.9.6.jar:2.9.6] at
com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107)
~[jackson-databind-2.9.6.jar:2.9.6] at
com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25)
~[jackson-databind-2.9.6.jar:2.9.6] at
com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
~[jackson-databind-2.9.6.jar:2.9.6] at
com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
~[jackson-databind-2.9.6.jar:2.9.6] at
com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
~[jackson-databind-2.9.6.jar:2.9.6] at
谷歌搜索后,我发现解决方案是使用@JsonIgnore
. 这个注释解决了我的问题。但是使用这个注解会导致 Angular 出现问题。
你有没有其他建议来避免这个例外?非常感谢你的帮助。
解决方案
JsonIgnore
不是唯一的解决方案。您还可以使用@JsonManagedReference
和@JsonBackReference
@ManyToOne
@JsonBackReference
@JoinColumn(name="sexe_id")
private Sexe sexe;
@JsonManagedReference
@OneToMany(mappedBy="sexe", fetch = FetchType.LAZY)
private List<User> users;
推荐阅读
- java - AEM 调度程序的配置更改?
- wordpress - Woocommerce Order:每个类别的购物车
- javascript - console.log 如何在幕后工作?
- node.js - 在猫鼬模式中嵌套对象数组
- android - 如何在客户端验证 APK 签名证书?
- javascript - ReferenceError:使用 Watermarkjs 时未定义图像
- php - 如何在每个类别的加载页面中仅获取 2 个产品
- android - react-native maps 停止在 android 中构建
- jenkins - 如何将自定义网址从詹金斯发送到电子邮件?
- ios - 将转移的 iOS 应用程序更新到另一个开发者帐户