From 59f2df1bcc673bdb86f595cefe9af7cd36ff16c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz> Date: Mon, 12 Apr 2021 14:04:28 +0200 Subject: [PATCH] solution --- src/main/java/koz01/java2/lab10/Clas.java | 11 +- .../java/koz01/java2/lab10/Department.java | 4 + src/main/java/koz01/java2/lab10/Employee.java | 8 +- .../koz01/java2/lab10/NonTeachingStaff.java | 2 + src/main/java/koz01/java2/lab10/Staff.java | 4 +- src/main/java/koz01/java2/lab10/Teacher.java | 11 +- .../java/koz01/java2/lab10/TeachingStaff.java | 3 + src/test/java/koz01/java2/lab10/DemoJPA.java | 298 +++++++++--------- 8 files changed, 179 insertions(+), 162 deletions(-) diff --git a/src/main/java/koz01/java2/lab10/Clas.java b/src/main/java/koz01/java2/lab10/Clas.java index 20993ff..edf245d 100644 --- a/src/main/java/koz01/java2/lab10/Clas.java +++ b/src/main/java/koz01/java2/lab10/Clas.java @@ -1,7 +1,5 @@ package koz01.java2.lab10; -import java.util.Set; - import javax.persistence.Entity; import lombok.AllArgsConstructor; @@ -17,8 +15,9 @@ public class Clas extends BaseEntity { @Getter @Setter private String cname; - - @Getter - @Setter - private Set<Clas> clas; + /* + @Getter + @Setter + private Set<Clas> clas; + */ } diff --git a/src/main/java/koz01/java2/lab10/Department.java b/src/main/java/koz01/java2/lab10/Department.java index 132b6ed..7b21b98 100644 --- a/src/main/java/koz01/java2/lab10/Department.java +++ b/src/main/java/koz01/java2/lab10/Department.java @@ -1,8 +1,10 @@ + package koz01.java2.lab10; import java.util.List; import javax.persistence.Entity; +import javax.persistence.OneToMany; import lombok.AllArgsConstructor; import lombok.Getter; @@ -18,7 +20,9 @@ public class Department extends BaseEntity { @Setter private String name; + @OneToMany(targetEntity = Employee.class, mappedBy = "departmentRereference") @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 259c167..720e180 100644 --- a/src/main/java/koz01/java2/lab10/Employee.java +++ b/src/main/java/koz01/java2/lab10/Employee.java @@ -1,6 +1,9 @@ + package koz01.java2.lab10; import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; import lombok.AllArgsConstructor; import lombok.Getter; @@ -28,8 +31,11 @@ public class Employee extends BaseEntity { @Setter private String deg; + + @ManyToOne + @JoinColumn(name = "department_id") @Setter @Getter - private Department department; + private Department departmentRereference; } diff --git a/src/main/java/koz01/java2/lab10/NonTeachingStaff.java b/src/main/java/koz01/java2/lab10/NonTeachingStaff.java index 59b164a..71f5e2f 100644 --- a/src/main/java/koz01/java2/lab10/NonTeachingStaff.java +++ b/src/main/java/koz01/java2/lab10/NonTeachingStaff.java @@ -1,5 +1,6 @@ package koz01.java2.lab10; +import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import lombok.Getter; @@ -7,6 +8,7 @@ import lombok.NoArgsConstructor; import lombok.Setter; @Entity +@DiscriminatorValue(value = "nts") @NoArgsConstructor public class NonTeachingStaff extends Staff { diff --git a/src/main/java/koz01/java2/lab10/Staff.java b/src/main/java/koz01/java2/lab10/Staff.java index 6f09a62..fc78ace 100644 --- a/src/main/java/koz01/java2/lab10/Staff.java +++ b/src/main/java/koz01/java2/lab10/Staff.java @@ -1,16 +1,18 @@ 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.SINGLE_TABLE) @NoArgsConstructor public class Staff extends BaseEntity { - @Getter @Setter private String sname; diff --git a/src/main/java/koz01/java2/lab10/Teacher.java b/src/main/java/koz01/java2/lab10/Teacher.java index ee1c357..0830244 100644 --- a/src/main/java/koz01/java2/lab10/Teacher.java +++ b/src/main/java/koz01/java2/lab10/Teacher.java @@ -1,8 +1,6 @@ package koz01.java2.lab10; -import java.util.Set; - import javax.persistence.Entity; import lombok.AllArgsConstructor; @@ -22,8 +20,9 @@ public class Teacher extends BaseEntity { @Getter @Setter private String subject; - - @Getter - @Setter - private Set<Clas> clasSet; + /* + @Getter + @Setter + private Set<Clas> clasSet; + */ } diff --git a/src/main/java/koz01/java2/lab10/TeachingStaff.java b/src/main/java/koz01/java2/lab10/TeachingStaff.java index 7900ce4..04f10e3 100644 --- a/src/main/java/koz01/java2/lab10/TeachingStaff.java +++ b/src/main/java/koz01/java2/lab10/TeachingStaff.java @@ -1,12 +1,15 @@ package koz01.java2.lab10; +import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; + @Entity +@DiscriminatorValue(value = "ts") @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..5439ed2 100644 --- a/src/test/java/koz01/java2/lab10/DemoJPA.java +++ b/src/test/java/koz01/java2/lab10/DemoJPA.java @@ -2,9 +2,7 @@ package koz01.java2.lab10; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; @@ -21,6 +19,7 @@ public class DemoJPA { EntityManager entitymanager = emfactory.createEntityManager(); entitymanager.getTransaction().begin(); + // Teaching staff entity TeachingStaff ts1 = new TeachingStaff("Gopal", "MSc MEd", "Maths"); TeachingStaff ts2 = new TeachingStaff("Manisha", "BSc BEd", "English"); @@ -40,152 +39,155 @@ public class DemoJPA { emfactory.close(); } - @Test - public void demostrateManyToOne() { - EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( - "lab10"); - EntityManager entitymanager = emfactory.createEntityManager(); - entitymanager.getTransaction().begin(); - - // Create Department Entity - Department department = new Department(); - department.setName("Development"); - - // Store Department - entitymanager.persist(department); - - // Create Employee1 Entity - Employee employee1 = new Employee(); - employee1.setEname("Satish"); - employee1.setSalary(45000.0); - employee1.setDeg("Technical Writer"); - employee1.setDepartment(department); - - // Create Employee2 Entity - Employee employee2 = new Employee(); - employee2.setEname("Krishna"); - employee2.setSalary(45000.0); - employee2.setDeg("Technical Writer"); - employee2.setDepartment(department); - - // Create Employee3 Entity - Employee employee3 = new Employee(); - employee3.setEname("Masthanvali"); - employee3.setSalary(50000.0); - employee3.setDeg("Technical Writer"); - employee3.setDepartment(department); - - // Store Employees - entitymanager.persist(employee1); - entitymanager.persist(employee2); - entitymanager.persist(employee3); - - entitymanager.getTransaction().commit(); - entitymanager.close(); - emfactory.close(); - } - - @Test - public void demostrateOneToMany() { - EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( - "lab10"); - EntityManager entitymanager = emfactory.createEntityManager(); - entitymanager.getTransaction().begin(); - - // Create Employee1 Entity - Employee employee1 = new Employee(); - employee1.setEname("Satish"); - employee1.setSalary(45000.0); - employee1.setDeg("Technical Writer"); - - // Create Employee2 Entity - Employee employee2 = new Employee(); - employee2.setEname("Krishna"); - employee2.setSalary(45000.0); - employee2.setDeg("Technical Writer"); - - // Create Employee3 Entity - Employee employee3 = new Employee(); - employee3.setEname("Masthanvali"); - employee3.setSalary(50000.0); - employee3.setDeg("Technical Writer"); - - // Store Employee - entitymanager.persist(employee1); - entitymanager.persist(employee2); - entitymanager.persist(employee3); - - // Create Employeelist - List<Employee> emplist = new ArrayList<>(); - emplist.add(employee1); - emplist.add(employee2); - emplist.add(employee3); - - // Create Department Entity - Department department = new Department(); - department.setName("Development"); - department.setEmployee(emplist); - - // Store Department - entitymanager.persist(department); - - entitymanager.getTransaction().commit(); - entitymanager.close(); - emfactory.close(); - } - - @Test - public void demostrateManyToMany() { - - EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( - "lab10"); - EntityManager entitymanager = emfactory.createEntityManager(); - entitymanager.getTransaction().begin(); - - // Create Clas Entity - Clas clas1 = new Clas("1st", null); - Clas clas2 = new Clas("2nd", null); - Clas clas3 = new Clas("3rd", null); - - // Store Clas - entitymanager.persist(clas1); - entitymanager.persist(clas2); - entitymanager.persist(clas3); - - // Create Clas Set1 - Set<Clas> classSet1 = new HashSet<>(); - classSet1.add(clas1); - classSet1.add(clas2); - classSet1.add(clas3); - - // Create Clas Set2 - Set<Clas> classSet2 = new HashSet<>(); - classSet2.add(clas3); - classSet2.add(clas1); - classSet2.add(clas2); - - // Create Clas Set3 - Set<Clas> classSet3 = new HashSet<>(); - classSet3.add(clas2); - classSet3.add(clas3); - classSet3.add(clas1); - - // Create Teacher Entity - Teacher teacher1 = new Teacher("Satish", "Java", classSet1); - Teacher teacher2 = new Teacher("Krishna", "Adv Java", classSet2); - Teacher teacher3 = new Teacher("Masthanvali", "DB2", classSet3); - - // Store Teacher - entitymanager.persist(teacher1); - entitymanager.persist(teacher2); - entitymanager.persist(teacher3); - - entitymanager.getTransaction().commit(); - entitymanager.close(); - emfactory.close(); - - } - + /* + @Test + public void demostrateManyToOne() { + EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( + "lab10"); + EntityManager entitymanager = emfactory.createEntityManager(); + entitymanager.getTransaction().begin(); + + // Create Department Entity + Department department = new Department(); + department.setName("Development"); + + // Store Department + entitymanager.persist(department); + + // Create Employee1 Entity + Employee employee1 = new Employee(); + employee1.setEname("Satish"); + employee1.setSalary(45000.0); + employee1.setDeg("Technical Writer"); + employee1.setDepartment(department); + + // Create Employee2 Entity + Employee employee2 = new Employee(); + employee2.setEname("Krishna"); + employee2.setSalary(45000.0); + employee2.setDeg("Technical Writer"); + employee2.setDepartment(department); + + // Create Employee3 Entity + Employee employee3 = new Employee(); + employee3.setEname("Masthanvali"); + employee3.setSalary(50000.0); + employee3.setDeg("Technical Writer"); + employee3.setDepartment(department); + + // Store Employees + entitymanager.persist(employee1); + entitymanager.persist(employee2); + entitymanager.persist(employee3); + + entitymanager.getTransaction().commit(); + entitymanager.close(); + emfactory.close(); + } + + */ + @Test + public void demostrateOneToMany() { + EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( + "lab10"); + EntityManager entitymanager = emfactory.createEntityManager(); + entitymanager.getTransaction().begin(); + + // Create Employee1 Entity + Employee employee1 = new Employee(); + employee1.setEname("Satish"); + employee1.setSalary(45000.0); + employee1.setDeg("Technical Writer"); + + // Create Employee2 Entity + Employee employee2 = new Employee(); + employee2.setEname("Krishna"); + employee2.setSalary(45000.0); + employee2.setDeg("Technical Writer"); + + // Create Employee3 Entity + Employee employee3 = new Employee(); + employee3.setEname("Masthanvali"); + employee3.setSalary(50000.0); + employee3.setDeg("Technical Writer"); + + // Store Employee + entitymanager.persist(employee1); + entitymanager.persist(employee2); + entitymanager.persist(employee3); + + // Create Employeelist + List<Employee> emplist = new ArrayList<>(); + emplist.add(employee1); + emplist.add(employee2); + emplist.add(employee3); + + // Create Department Entity + Department department = new Department(); + department.setName("Development"); + department.setEmployee(emplist); + + // Store Department + entitymanager.persist(department); + + entitymanager.getTransaction().commit(); + entitymanager.close(); + emfactory.close(); + } + + /* + @Test + public void demostrateManyToMany() { + + EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( + "lab10"); + EntityManager entitymanager = emfactory.createEntityManager(); + entitymanager.getTransaction().begin(); + + // Create Clas Entity + Clas clas1 = new Clas("1st", null); + Clas clas2 = new Clas("2nd", null); + Clas clas3 = new Clas("3rd", null); + + // Store Clas + entitymanager.persist(clas1); + entitymanager.persist(clas2); + entitymanager.persist(clas3); + + // Create Clas Set1 + Set<Clas> classSet1 = new HashSet<>(); + classSet1.add(clas1); + classSet1.add(clas2); + classSet1.add(clas3); + + // Create Clas Set2 + Set<Clas> classSet2 = new HashSet<>(); + classSet2.add(clas3); + classSet2.add(clas1); + classSet2.add(clas2); + + // Create Clas Set3 + Set<Clas> classSet3 = new HashSet<>(); + classSet3.add(clas2); + classSet3.add(clas3); + classSet3.add(clas1); + + // Create Teacher Entity + Teacher teacher1 = new Teacher("Satish", "Java", classSet1); + Teacher teacher2 = new Teacher("Krishna", "Adv Java", classSet2); + Teacher teacher3 = new Teacher("Masthanvali", "DB2", classSet3); + + // Store Teacher + entitymanager.persist(teacher1); + entitymanager.persist(teacher2); + entitymanager.persist(teacher3); + + entitymanager.getTransaction().commit(); + entitymanager.close(); + emfactory.close(); + + } + */ public void demonstrateCriterie() { } -- GitLab