jpa
Eins zu Eins Mapping
Suche…
Parameter
| Anmerkung | Zweck |
|---|---|
| @TableGenerator | Gibt den Namen des Generators und den Tabellennamen an, wo der Generator gefunden werden kann |
| @GeneratedValue | Gibt die Erzeugungsstrategie an und bezieht sich auf den Namen des Generators |
| @Eins zu eins | Gibt eine Eins-zu-Eins-Beziehung zwischen Mitarbeiter und Schreibtisch an. Hier ist der Mitarbeiter Inhaber der Beziehung |
| mappedBy | Dieses Element befindet sich auf der Rückseite der Relation. Dies ermöglicht eine bidirektionale Beziehung |
Eins-zu-Eins-Beziehung zwischen Mitarbeiter und Schreibtisch
Betrachten Sie eine bidirektionale Eins-zu-Eins-Beziehung zwischen Mitarbeiter und Schreibtisch.
Mitarbeiter.java
@Entity
public class Employee {
@TableGenerator(name = "employee_gen", table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_val", allocationSize = 100)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "employee_gen")
private int idemployee;
private String firstname;
private String lastname;
private String email;
@OneToOne
@JoinColumn(name = "iddesk")
private Desk desk;
// getters and setters
}
Desk.java
@Entity
public class Desk {
@TableGenerator(table = "id_gen", name = "desk_gen", pkColumnName = "gen_name", valueColumnName = "gen_value", allocationSize = 1)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "desk_gen")
private int iddesk;
private int number;
private String location;
@OneToOne(mappedBy = "desk")
private Employee employee;
// getters and setters
}
Testcode
/* Create EntityManagerFactory */
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("JPAExamples");
/* Create EntityManager */
EntityManager em = emf.createEntityManager();
Employee employee;
employee = new Employee();
employee.setFirstname("pranil");
employee.setLastname("gilda");
employee.setEmail("sdfsdf");
Desk desk = em.find(Desk.class, 1); // retrieves desk from database
employee.setDesk(desk);
em.persist(employee);
desk = em.find(Desk.class, 1); // retrieves desk from database
desk.setEmployee(employee);
System.out.println(desk.getEmployee());
Das Datenbankdiagramm ist wie folgt dargestellt.
- Die Annotation @JoinColumn nimmt die Zuordnung der Entität vor, die der Tabelle zugeordnet ist, die die Join-Spalte enthält. Der Eigentümer der Beziehung. In unserem Fall enthält die Employee-Tabelle die Join-Spalte. @JoinColumn befindet sich im Desk-Feld der Employee-Entität.
- Das Element mappedBy sollte in der @OneToOne- Zuordnung in der Entität angegeben werden, die die Beziehungsseite kehrt . dh Die Entität, die keine Join-Spalte für Datenbankaspekte bereitstellt. In unserem Fall ist Desk die inverse Entität.
Das vollständige Beispiel finden Sie hier
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow