Manchmal braucht man eine „One to One“ Verbindung zweier BEs mit JPA (Java Persistence API) für Spring Boot (2.0.2) (JEE mit EJB 3.0 ist ähnlich, nur andere Annotationen).
Z.b. arbeiten ein Arzt in der Regel in einem Krankenhaus. Wenn sie nicht gerade als Belegärzte tätig sind. Also „One to One„:
Hier nun eine Kopiervorlage um diese wiederkehrende Verbindung anzulegen:
In Arzt.java ist folgendes nötig:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import javax.persistence.*; @Entity @Table(name = "arzt") public class Arzt { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "arzt_id") private Long id; @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "arzt") private Krankenhaus krankenhaus; //... protected Arzt() { // dieser Konstruktor wird nicht für die Objekterzeugung verwendet, nur Bean } // Konstruktor mit Parametern und alle Getter und Setter ... |
In Krankenhaus.java ist folgendes nötig:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import javax.persistence.*; @Entity @Table(name = "krankenhaus") public class Krankenhaus { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "krankenhaus_id") private Long id; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "arzt_id", nullable = false) private Arzt arzt; protected Krankenhaus() { // dieser Konstruktor wird nicht für die Objekterzeugung verwendet, nur Bean } // Konstruktor mit Parametern und alle Getter und Setter |
Wer eine many to many braucht, kann hier kopieren.