Kürzlich habe ich einen neuen Job angefangen (4 Monate) und ich habe noch viel von Spring zu lernen. Eines der Probleme, die wir haben, ist, dass, wenn wir Objekte aus der DB bringen und sie in ein Repository (JSON) einbinden (JSON), eine Menge unnötiger Daten - zum Beispiel (kleines Beispiel):JSON Object mapping - Spring Data
Wir haben eine Klasse Employee, die eine Abteilung Objekt hat und es bringt die folgenden:
{
'EmployeeId':1,
'Name':'John',
'Email':'[email protected]'
'Department': {
'DepartmentId':1,
'name':'Development',
'location':'Somewhere',
}
}
Klasse Details:
@Entity
@Table(name = "Employees")
@NamedQuery(name = "Employee.findAll", query = "SELECT e FROM Employees e")
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "EmployeeId")
private long EmployeeId;
@Column(name = "Email")
private String email;
@Column(name = "address")
private String address;
@ManyToOne
@JoinColumn(name = "DepartmentId")
@JsonBackReference(value = "department_employee")
private Departament departament;
// Other attributes, setters & getters
}
Wenn ich einen „custom“ Mapper zu bauen, die die beste ist trainieren? Oder wie kann ich etwas implementieren, die mir erlaubt, eine JSON zu erstellen, die mir so etwas wie dies bringt:
{
'EmployeeId':'1',
'Name':'John',
'Email':'[email protected]'
}
Ich habe einige der Forschung getan, und ich stolperte über die folgenden Beispiele:
Jackson's @JsonView, @JsonFilter and Spring
auch denke ich habe für ein bestimmten ein generisches Objekt zu verwenden, die ein HashMap enthält, so kann ich schließen, auf dem Controller die Daten, die wir wollen oder müssen Bildschirm.
Ich schätze wirklich jede Hilfe - hoffe, die Frage ist klar genug.
btw nach, Frage auch auf gepostet: https: // coderanch.com/t/669152/Spring/Spring-Mapping-Objects#3124303 –
Wenn Sie die Abteilung nicht serialisieren möchten, können Sie die Annotation @JsonIgnoreProperties verwenden. – Azizi
Ich entschuldige mich, wenn ich das in der Frage nicht angegeben habe - auf einigen Bildschirmen brauche ich die Abteilung, zum Beispiel wenn ich den Mitarbeiter aktualisieren muss.Aber, wenn ich nur den Namen, die E-Mail und einige spezifische Daten anzeigen muss, was ist der angemessenste Weg, dies zu tun? Die @ JsonIgnoreProperties ignoriert das Feld vollständig. –