Nicht umgehen kann, verwaltet/zurück Referenz 'defaultReference': keine-zurück-Referenz-Eigenschaft finden
Habe ich zwei Modell-Klassen. Man ist
@Entity(name = "userTools")
@Table(uniqueConstraints = @UniqueConstraint(columnNames = { "assignToUser_id","toolsType_id" }))
@Inheritance(strategy = InheritanceType.JOINED)
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "className")
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserTools {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
private ToolsType toolsType;
@OneToMany(mappedBy = "userTools", fetch = FetchType.EAGER, cascade = { CascadeType.ALL }, orphanRemoval = true)
@Cascade(org.hibernate.annotations.CascadeType.DELETE)
@JsonManagedReference
private List<UserToolsHistory> userToolsHistory;
}
ist und die zweite
@Entity(name = "userToolsHistory")
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserToolsHistory {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
private ToolsType toolsType;
@ManyToOne
@JsonIgnore
@JsonBackReference
private UserTools userTools;
private String comments;
}
Aber auf speichern bin ich immer diese Fehlermeldung:
Can not handle managed/back reference 'defaultReference': no back
reference property found from type [collection type; class
java.util.List, contains [simple type, class
com.dw.model.tools.UserToolsHistory]]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Ausnahme, mit der Sie konfrontiert sind, ergibt sich aus der MappingJackson2HttpMessageConverter.
Um es zu beheben tauschen Sie die Anmerkungen, so erhält man :
In diesem tutorial wird erklärt, wie es getan werden muss : jackson-bidirektional-Beziehungen-und-unendliche Rekursion
@JsonManagedReference
aber nicht sicher, wie es funktionieren würde?Um die Fehlersuche zu erleichtern, können Sie hinzufügen, einen anderen Namen zu jeder
@JsonManagedReference
und@JsonBackReference
zum Beispiel:Diese Weise der Fehler ist mehr sinnvoll, denn es gibt den Referenz-Namen anstelle von 'defaultReference'.
Bitte geben Sie das enity, die Sie versuchen zu serialisieren -
UserTools
oderUserToolsHistory
? Trotzdem können Sie versuchen, das hinzufügen von get-und Set-Methoden, um Ihre Entitäten und fügen Sie@JsonIgnore
auf den "get{Parent}()" in der "Kind" - Klasse.@JsonManagedReference
und@JsonBackReference
und ersetzen Sie es mit@JsonIdentityInfo