【发布时间】:2021-11-12 15:19:50
【问题描述】:
我有 2 个实体用户和权限,它们具有双向多对一关系。 但是当我发送用户对象作为来自 RestController 的响应时,我得到了嵌套对象 IE。用户{Authority{User{Authority{User{Authority{..}}}}}}
如何实现控制器必须只返回? 用户{Authority{}}
下面是我的 User 实体类:-
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userId;
private String username;
private String password;
private String mobileNo;
@OneToMany(fetch =FetchType.EAGER , cascade = CascadeType.ALL, mappedBy = "user")
private Set<Authorities> authorities;
// non-parameterized and parameterized constructor and all getters and setters
}
@Entity
public class Authorities implements GrantedAuthority {
private static final long serialVersionUID = -2789840366318513805L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String authority;
@ManyToOne
private User user;
// non-parameterized and parameterized constructor and all getters and setters
}
@RestController
public class HomeController {
@GetMapping(path = "/home")
public @ResponseBody User home(@AuthenticationPrincipal User user){
return user;
}
}
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2.12.4.jar:2.12.4]
2021-09-18 00:45:17.935 ERROR 9340 --- [nio-8080-exec-7] s.e.ErrorMvcAutoConfiguration$StaticView : Cannot render error page for request [/home] as the response has already been committed. As a result, the response may have the wrong status code.
【问题讨论】:
标签: java spring-boot rest jpa spring-security