엔티티 사용자가 있습니다.
public class Users implements Serializable {
private Long id;
private String password;
private String email;
private Boolean enabled;
private String name;
private String lastname;
private String userRole;
private String secondName;
private String telephone;
private String automobile;
private List<Claim> claims;
private List<Orders> ordersList;
// getters and setters
}
사용자는 많은 클레임과 주문이 있습니다. 그리고 이와 같은 내 컨트롤러 방법
@RequestMapping(value = "get", method = GET)
public
@ResponseBody
Users get() {
return ((CustomUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUserInfo();
}
그런 다음 사용자를 얻으려고하면이 오류가 발생합니다.
com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:694)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:157)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:672)
//etc
내 모든 엔터티는 Serializible 인터페이스를 구현합니다. 근데 이렇게 해보면
@RequestMapping(value = "get", method = GET)
public
@ResponseBody
Users get() {
Users users = ((CustomUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUserInfo();
users.setClaims(null);
users.setOrdersList(null);
return users;
}
그리고 그것은 작동합니다. 나는 이와 같은 json 문자열을 얻습니다.
{
"id" : 7,
"password" : "$2a$11$IDMDPHQNiNEs9NP282zrGe3rn8la5WL8aR.RY3IFFa8y0NJc9ubdS",
"email" : "[email protected]",
"enabled" : true,
"name" : "Alex",
"lastname" : "Zhukov",
"userRole" : "ROLE_USER",
"secondName" : null,
"telephone" : "89274455166",
"automobile" : "MercedesW222",
"claims" : null,
"ordersList" : null
}
내가 도대체 뭘 잘못하고있는 겁니까? 내 pom.xml
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>RELEASE</version>
</dependency>
업데이트 된 클레임 및 주문 엔터티
public class Orders implements Serializable {
private Long id;
private String status;
private String address;
private Timestamp fDate;
private Integer sum;
private Users users;
private List<OrdersProducts> ordersProductsList;
//getters and setters
}
public class Claim implements Serializable {
private Long id;
private Timestamp fDate;
private String reason;
private String status;
private String response;
private Users user;
private Integer sum;
//getters and setters
}
분명히 그는 깊은 재귀에 들어갑니다. 사용자는 많은 클레임과 주문을 가지고 있으며 주문 및 클레임은 사용자에게 속합니다. 그리고 무한대까지. 하지만 다시이 경우에는 클레임 및 주문을 null로 설정해야합니까?
엔티티에 대한 순환 참조가 있습니다. @JsonIdentityInfo 주석을 살펴보십시오. 그리고 아마도 아래 솔루션이 도움이 될 수 있습니다.
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
public class Claim implements Serializable {}
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
public class Orders implements Serializable {}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다