我有兩個物體User和Authority,它們之間有雙向的Many-To-One關系。 但是當我從RestController發送User物件作為回應時,我得到了嵌套物件 即。User{Authority{User{Authority{User{Authority{...}}}}}}
我怎樣才能實作控制器必須只回傳? User{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;
//非引數化和引數化的建構式和所有getters和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用戶。
//非引數化和引數化的建構式和所有的getters和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.serializeAsField)。 java:728) ~[jackson-databind-2.12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2。 12.4.jar:2.12.4]
at com.fastxml.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 : 無法渲染錯誤頁面 for request [/home] ,因為回應已經被提交。因此,回應可能有錯誤的狀態代碼。
uj5u.com熱心網友回復:
在Authorities類中,在User欄位上方添加@JsonIgnore
@ManyToOne
@JsonIgnore
private User user。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/327324.html
標籤:

