自引用记录导致 "Direct self-reference leading to cycle" 异常
Self-Referencing record leading to "Direct self-reference leading to cycle" exception
我有自引用class
@Entity
@Table(name = "contacts")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "contacts")
public class Contacts implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "password_smartlpc")
private String password;
@Column(name = "full_name")
private String fullName;
@ManyToOne
private Contacts companyContact;
}
但是对于我的一个数据库记录
id full_name username password company_contact_id
5 JAK movies abc xyz 5
这条记录有 company_contact_id 作为其自身 id.Which,而检索进入自引用循环。
Enter: com.fps.web.rest.errors.ExceptionTranslator.processRuntimeException()
with argument[s] =
[org.springframework.http.converter.HttpMessageNotWritableException: Could not
write content: Direct self-reference leading to cycle (through reference
chain: java.util.UnmodifiableRandomAccessList[2]-
>com.fps.domain.Contacts["companyContact"]-
>com.fps.domain.Contacts["companyContact"]); nested exception is
com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference
leading to cycle (through reference chain:
java.util.UnmodifiableRandomAccessList[2]-
>com.fps.domain.Contacts["companyContact"]-
>com.fps.domain.Contacts["companyContact"])]
变通方法我试过了
(fetch = FetchType.LAZY) = gives same error as above.
@JsonIgnore : removes error but does not retrieves Company_Contact_id
@JsonManagedReference @JsonBackReference same as above.
不幸的是,我无法更改数据库或更改 it.Since 它的 legacy.Any 更多我可以尝试的东西??
谢谢
在 JHipster 中尝试 using DTOs,您将更好地控制 JSON 序列化,而不是简单地公开您的实体,尤其是当您受到遗留数据库模式的限制时。
我有自引用class
@Entity
@Table(name = "contacts")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "contacts")
public class Contacts implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "password_smartlpc")
private String password;
@Column(name = "full_name")
private String fullName;
@ManyToOne
private Contacts companyContact;
}
但是对于我的一个数据库记录
id full_name username password company_contact_id
5 JAK movies abc xyz 5
这条记录有 company_contact_id 作为其自身 id.Which,而检索进入自引用循环。
Enter: com.fps.web.rest.errors.ExceptionTranslator.processRuntimeException()
with argument[s] =
[org.springframework.http.converter.HttpMessageNotWritableException: Could not
write content: Direct self-reference leading to cycle (through reference
chain: java.util.UnmodifiableRandomAccessList[2]-
>com.fps.domain.Contacts["companyContact"]-
>com.fps.domain.Contacts["companyContact"]); nested exception is
com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference
leading to cycle (through reference chain:
java.util.UnmodifiableRandomAccessList[2]-
>com.fps.domain.Contacts["companyContact"]-
>com.fps.domain.Contacts["companyContact"])]
变通方法我试过了
(fetch = FetchType.LAZY) = gives same error as above.
@JsonIgnore : removes error but does not retrieves Company_Contact_id
@JsonManagedReference @JsonBackReference same as above.
不幸的是,我无法更改数据库或更改 it.Since 它的 legacy.Any 更多我可以尝试的东西?? 谢谢
在 JHipster 中尝试 using DTOs,您将更好地控制 JSON 序列化,而不是简单地公开您的实体,尤其是当您受到遗留数据库模式的限制时。