Wenn ich das folgende Entity-Objekt habe, das mehrere Fremdschlüsselbeziehungen hat, wie handle ich mit der Formularübergabe, wenn ich das Beziehungsobjekt nicht in der Anfrage zurückbekomme.JPA-Persist-Beziehungen
Das Unternehmen könnte wie folgt aussehen:
@Entity
@Table(name = "employee")
public class Employee implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "middle_name")
private String middleName;
@Column(name = "login_id")
private String loginId;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "department_id")
private Department department;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "employment_type_id")
private EmploymentType employmentType;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "citizenship_id")
private Citizenship citizenship;
public Employee() {
}
}
Aber das ist die HTTP-POST-Anfrage ich empfangen werde.
id: 1
firstName: Bob
lastName: Dole
middleName: Trump
loginId: bdole
departmentId: 1
employmentTypeId: 2
citizenship_id: 4
JPA möchte das Beziehungsobjekt und nicht die ID speichern. Allerdings scheint es auch ineffizient zu sein, all diese Lookups zu machen, die die IDs zu den erforderlichen Objekten machen. Gibt es einen besseren Weg, damit umzugehen?
Haben Sie daran gedacht, den Fremdschlüssel als Basiszuordnung zuzuordnen, anstatt ihn als Referenzzuordnung zu verwenden? Wenn Ihre Anwendung nicht die gesamte Abteilung, den Beschäftigungstyp und die Staatsbürgerschaft abrufen und weitergeben muss, warum sollten Sie Ihre Anwendung damit im Objektmodell belasten? Die Chancen stehen gut, dass Sie Nachschlagevorgänge durchführen müssen, um sicherzustellen, dass diese IDs vorhanden sind. Andernfalls kann Ihr Post Ihnen nicht vorhandene Abteilungsnummern geben, so dass Sie das Nachschlagen trotzdem vornehmen müssen. – Chris