Spring boot JPA JSON - ohne verschachtelte Objekt mit OneToMany-relation
Ich habe ein Projekt, das sich mit einigen ORM mapping von Objekten (es gibt einige @OneToMany
Beziehungen etc).
Bin ich mit REST-Schnittstelle, die zur Behandlung dieser Objekte und Spring JPA, Sie zu verwalten in der API.
Dies ist ein Beispiel von einer meiner POJOs:
@Entity
public class Flight {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
private String dateOfDeparture;
private double distance;
private double price;
private int seats;
@ManyToOne(fetch = FetchType.EAGER)
private Destination fromDestination;
@ManyToOne(fetch = FetchType.EAGER)
private Destination toDestination;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "flight")
private List<Reservation> reservations;
}
Wenn Sie eine Anfrage, ich muss geben Sie alles in den JSON:
{
"id": 0,
"reservations": [
{}
],
"name": "string",
"dateOfDeparture": "string",
"distance": 0,
"price": 0,
"seats": 0,
"from": {
"id": 0,
"name": "string"
},
"to": {
"id": 0,
"name": "string"
}
}
Was ich bevorzugen würde, ist tatsächlich die Angabe der id des referenzierten Objekts, anstatt Ihren gesamten Körper, wie das ist:
{
"id": 0,
"reservations": [
{}
],
"name": "string",
"dateOfDeparture": "string",
"distance": 0,
"price": 0,
"seats": 0,
"from": 1,
"to": 2
}
Ist das überhaupt möglich? Könnte jemand geben Sie mir einige Einblicke auf, wie dies zu tun? Ich bin nur der Suche nach tutorials, wie man das Gegenteil tun (die Lösung, die ich bereits habe).
- Sie können versuchen, finden dieses nützlich - wiki.fasterxml.com/JacksonFeatureObjectIdentity
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es ist möglich.
Zu diesem Zweck sollten Sie verwenden ein paar von Jackson Anmerkungen zu deinen entity-Modell:
Ihre serialisierten JSON Aussehen wird, statt dieser:
wie diese:
Wie bereits in offizielle Dokumentation:
Können Sie nur ignorieren Sie Ihre JSON-Inhalt mit @JsonIgnore annotation.
Das Feld, welches Sie ausblenden möchten, in Ihrer JSON-dort können Sie kommentieren, dass mit @JsonIgnore.
Sie können ändern Sie Ihre JSON-so :
Aber Sie kann nicht, wie diese: