1

私が持っている自己参照クラス自己参照「直接自己参照サイクルにつながる」例外

@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; 
} 

しかし、私の1つのデータベースレコード

id full_name username password company_contact_id 
5 JAK movies abc   xyz    5 

のためにつながるレコードをこのレコードは、次のようにcompany_contact_idたその検索中に自己参照サイクルに入ります。私の周り

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"])]  

仕事は残念ながら私は、データベースを変更したり、私は試すことができit.Sinceそのlegacy.Any多くのものを変更することはできません

(fetch = FetchType.LAZY) = gives same error as above. 
@JsonIgnore : removes error but does not retrieves Company_Contact_id 
@JsonManagedReference @JsonBackReference same as above. 

を試してみました? ありがとう

答えて

0

JHipsterで試してみると、レガシーデータベーススキーマに制約されている場合にエンティティを公開するのではなく、JSONのシリアル化をより詳細に制御できます。

+0

ありがとう、これは多くの助けになりました:) –