From 1d030b97219b8e905fbb0bb9c9d1b50aa22a0e53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz> Date: Wed, 14 Apr 2021 13:59:37 +0200 Subject: [PATCH] Improve master. --- .../java/koz01/java2/lab10/BaseEntity.java | 2 + .../java/koz01/java2/lab10/Department.java | 2 + src/main/java/koz01/java2/lab10/Employee.java | 7 +- src/test/java/koz01/java2/lab10/DemoJPA.java | 100 ++++++++++++++++++ 4 files changed, 107 insertions(+), 4 deletions(-) diff --git a/src/main/java/koz01/java2/lab10/BaseEntity.java b/src/main/java/koz01/java2/lab10/BaseEntity.java index b1ed9db..176191a 100644 --- a/src/main/java/koz01/java2/lab10/BaseEntity.java +++ b/src/main/java/koz01/java2/lab10/BaseEntity.java @@ -9,9 +9,11 @@ import javax.persistence.MappedSuperclass; import lombok.EqualsAndHashCode; import lombok.Getter; +import lombok.ToString; @MappedSuperclass @EqualsAndHashCode +@ToString public class BaseEntity implements Serializable { @Getter diff --git a/src/main/java/koz01/java2/lab10/Department.java b/src/main/java/koz01/java2/lab10/Department.java index 8b09f00..8ab9522 100644 --- a/src/main/java/koz01/java2/lab10/Department.java +++ b/src/main/java/koz01/java2/lab10/Department.java @@ -9,8 +9,10 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; @Entity +@ToString(callSuper = true) @AllArgsConstructor @NoArgsConstructor public class Department extends BaseEntity { diff --git a/src/main/java/koz01/java2/lab10/Employee.java b/src/main/java/koz01/java2/lab10/Employee.java index f21bdc1..b4b98df 100644 --- a/src/main/java/koz01/java2/lab10/Employee.java +++ b/src/main/java/koz01/java2/lab10/Employee.java @@ -7,16 +7,14 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; @Entity +@ToString(callSuper = true) @AllArgsConstructor @NoArgsConstructor public class Employee extends BaseEntity { - @Getter - @Setter - private int eid; - @Getter @Setter private String ename; @@ -29,6 +27,7 @@ public class Employee extends BaseEntity { @Setter private String deg; + @ToString.Exclude @Transient @Setter @Getter diff --git a/src/test/java/koz01/java2/lab10/DemoJPA.java b/src/test/java/koz01/java2/lab10/DemoJPA.java index d859bdd..deea5f3 100644 --- a/src/test/java/koz01/java2/lab10/DemoJPA.java +++ b/src/test/java/koz01/java2/lab10/DemoJPA.java @@ -9,9 +9,15 @@ import java.util.Set; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.junit.jupiter.api.Test; +import lombok.extern.log4j.Log4j2; + +@Log4j2 public class DemoJPA { @Test @@ -134,6 +140,67 @@ public class DemoJPA { emfactory.close(); } + @Test + public void demostrateOneToManyMapped() { + 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 Employee + entitymanager.persist(employee1); + entitymanager.persist(employee2); + entitymanager.persist(employee3); + + entitymanager.getTransaction().commit(); + entitymanager.close(); + emfactory.close(); + + emfactory = Persistence.createEntityManagerFactory("lab10"); + entitymanager = emfactory.createEntityManager(); + + CriteriaBuilder cb = entitymanager.getCriteriaBuilder(); + CriteriaQuery<Department> query = entitymanager.getCriteriaBuilder() + .createQuery(Department.class); + Root<Department> root = query.from(Department.class); + + for (Department res : entitymanager.createQuery(query.select(root).where(cb + .like(root.get(Department_.name), "dep"))) + .getResultList()) + { + + log.info("dep = {}, dep.employee = {}", res, res.getEmployee()); + } + } + @Test public void demostrateManyToMany() { @@ -188,5 +255,38 @@ public class DemoJPA { public void demonstrateCriterie() { + 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); + entitymanager.getTransaction().commit(); + + + entitymanager.close(); + emfactory.close(); + } } -- GitLab