From 574192d08be569e1a6917b2a92280bff250ac4c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz> Date: Mon, 12 Apr 2021 15:52:18 +0200 Subject: [PATCH] Solution --- src/main/java/koz01/java2/lab10/Clas.java | 6 +++--- src/main/java/koz01/java2/lab10/Department.java | 6 ++++-- src/main/java/koz01/java2/lab10/Employee.java | 4 ++-- .../java/koz01/java2/lab10/NonTeachingStaff.java | 2 ++ src/main/java/koz01/java2/lab10/Staff.java | 3 +++ src/main/java/koz01/java2/lab10/Teacher.java | 6 +++--- src/main/java/koz01/java2/lab10/TeachingStaff.java | 2 ++ src/test/java/koz01/java2/lab10/DemoJPA.java | 14 ++++++++++++++ 8 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/main/java/koz01/java2/lab10/Clas.java b/src/main/java/koz01/java2/lab10/Clas.java index bd20f7d..5de9356 100644 --- a/src/main/java/koz01/java2/lab10/Clas.java +++ b/src/main/java/koz01/java2/lab10/Clas.java @@ -3,7 +3,7 @@ package koz01.java2.lab10; import java.util.Set; import javax.persistence.Entity; -import javax.persistence.Transient; +import javax.persistence.ManyToMany; import lombok.AllArgsConstructor; import lombok.Getter; @@ -19,8 +19,8 @@ public class Clas extends BaseEntity { @Setter private String cname; - @Transient + @ManyToMany(targetEntity = Teacher.class, mappedBy = "clas") @Getter @Setter - private Set<Clas> clas; + private Set<Teacher> teacher; } diff --git a/src/main/java/koz01/java2/lab10/Department.java b/src/main/java/koz01/java2/lab10/Department.java index 8b09f00..cbe6404 100644 --- a/src/main/java/koz01/java2/lab10/Department.java +++ b/src/main/java/koz01/java2/lab10/Department.java @@ -2,8 +2,9 @@ package koz01.java2.lab10; import java.util.List; +import javax.persistence.CascadeType; import javax.persistence.Entity; -import javax.persistence.Transient; +import javax.persistence.OneToMany; import lombok.AllArgsConstructor; import lombok.Getter; @@ -19,7 +20,8 @@ public class Department extends BaseEntity { @Setter private String name; - @Transient + @OneToMany(targetEntity = Employee.class, mappedBy = "department", + cascade = CascadeType.PERSIST) @Getter @Setter private List<Employee> employee; diff --git a/src/main/java/koz01/java2/lab10/Employee.java b/src/main/java/koz01/java2/lab10/Employee.java index f21bdc1..9ea9541 100644 --- a/src/main/java/koz01/java2/lab10/Employee.java +++ b/src/main/java/koz01/java2/lab10/Employee.java @@ -1,7 +1,7 @@ package koz01.java2.lab10; import javax.persistence.Entity; -import javax.persistence.Transient; +import javax.persistence.ManyToOne; import lombok.AllArgsConstructor; import lombok.Getter; @@ -29,7 +29,7 @@ public class Employee extends BaseEntity { @Setter private String deg; - @Transient + @ManyToOne @Setter @Getter private Department department; diff --git a/src/main/java/koz01/java2/lab10/NonTeachingStaff.java b/src/main/java/koz01/java2/lab10/NonTeachingStaff.java index 59b164a..7389f1a 100644 --- a/src/main/java/koz01/java2/lab10/NonTeachingStaff.java +++ b/src/main/java/koz01/java2/lab10/NonTeachingStaff.java @@ -1,6 +1,7 @@ package koz01.java2.lab10; import javax.persistence.Entity; +import javax.persistence.PrimaryKeyJoinColumn; import lombok.Getter; import lombok.NoArgsConstructor; @@ -8,6 +9,7 @@ import lombok.Setter; @Entity @NoArgsConstructor +@PrimaryKeyJoinColumn(referencedColumnName = "id") public class NonTeachingStaff extends Staff { @Getter diff --git a/src/main/java/koz01/java2/lab10/Staff.java b/src/main/java/koz01/java2/lab10/Staff.java index 6f09a62..87e3728 100644 --- a/src/main/java/koz01/java2/lab10/Staff.java +++ b/src/main/java/koz01/java2/lab10/Staff.java @@ -1,12 +1,15 @@ package koz01.java2.lab10; import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Entity +@Inheritance(strategy = InheritanceType.JOINED) @NoArgsConstructor public class Staff extends BaseEntity { diff --git a/src/main/java/koz01/java2/lab10/Teacher.java b/src/main/java/koz01/java2/lab10/Teacher.java index 1c67bac..811cbd7 100644 --- a/src/main/java/koz01/java2/lab10/Teacher.java +++ b/src/main/java/koz01/java2/lab10/Teacher.java @@ -4,7 +4,7 @@ package koz01.java2.lab10; import java.util.Set; import javax.persistence.Entity; -import javax.persistence.Transient; +import javax.persistence.ManyToMany; import lombok.AllArgsConstructor; import lombok.Getter; @@ -24,8 +24,8 @@ public class Teacher extends BaseEntity { @Setter private String subject; - @Transient + @ManyToMany(targetEntity = Clas.class) @Getter @Setter - private Set<Clas> clasSet; + private Set<Clas> clas; } diff --git a/src/main/java/koz01/java2/lab10/TeachingStaff.java b/src/main/java/koz01/java2/lab10/TeachingStaff.java index 7900ce4..a7af2b2 100644 --- a/src/main/java/koz01/java2/lab10/TeachingStaff.java +++ b/src/main/java/koz01/java2/lab10/TeachingStaff.java @@ -1,12 +1,14 @@ package koz01.java2.lab10; import javax.persistence.Entity; +import javax.persistence.PrimaryKeyJoinColumn; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Entity +@PrimaryKeyJoinColumn(referencedColumnName = "id") @NoArgsConstructor public class TeachingStaff extends Staff { diff --git a/src/test/java/koz01/java2/lab10/DemoJPA.java b/src/test/java/koz01/java2/lab10/DemoJPA.java index d859bdd..e5fd60a 100644 --- a/src/test/java/koz01/java2/lab10/DemoJPA.java +++ b/src/test/java/koz01/java2/lab10/DemoJPA.java @@ -3,6 +3,7 @@ package koz01.java2.lab10; import java.util.ArrayList; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; @@ -12,6 +13,9 @@ import javax.persistence.Persistence; import org.junit.jupiter.api.Test; +import lombok.extern.log4j.Log4j2; + +@Log4j2 public class DemoJPA { @Test @@ -83,6 +87,16 @@ public class DemoJPA { entitymanager.getTransaction().commit(); entitymanager.close(); emfactory.close(); + + emfactory = Persistence.createEntityManagerFactory("lab10"); + entitymanager = emfactory.createEntityManager(); + Iterator<?> result = entitymanager.createQuery("select d from Department d") + .getResultList().iterator(); + while (result.hasNext()) { + Department d = (Department) result.next(); + + log.info("d.employee {}", d.getEmployee()); + } } @Test -- GitLab