From 47f4a4eea7381deb4a3081792f56c62dd0489323 Mon Sep 17 00:00:00 2001 From: Katerina881 Date: Tue, 21 Mar 2023 09:37:08 +0400 Subject: [PATCH] Lab3 is done (+ dop task) --- .../springip/lab3/models/Position.java | 2 +- .../lab3/service/EmployeeService.java | 14 ++++++++- .../example/springip/CompanyServiceTests.java | 1 - .../springip/EmployeeServiceTests.java | 31 +++++++++++++++++++ 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/springip/lab3/models/Position.java b/src/main/java/com/example/springip/lab3/models/Position.java index fe21da6..7ad9cf2 100644 --- a/src/main/java/com/example/springip/lab3/models/Position.java +++ b/src/main/java/com/example/springip/lab3/models/Position.java @@ -15,7 +15,7 @@ public class Position { private String name; //mappedBy - атрибут, указывающий, что классом-владельцем отношений является другой класс - @ManyToMany(mappedBy = "positions", cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @ManyToMany(mappedBy = "positions", cascade = {CascadeType.REMOVE}, fetch = FetchType.EAGER) private List employees = new ArrayList<>(); public Position() { diff --git a/src/main/java/com/example/springip/lab3/service/EmployeeService.java b/src/main/java/com/example/springip/lab3/service/EmployeeService.java index b3c6b7b..16c6227 100644 --- a/src/main/java/com/example/springip/lab3/service/EmployeeService.java +++ b/src/main/java/com/example/springip/lab3/service/EmployeeService.java @@ -93,8 +93,20 @@ public class EmployeeService { public void deletePosition(Long id, Position p) { Employee e = findEmployee(id); e.removePosition(p); - System.out.println("Количество должностей после удаления: " + e.getPositions().size()); em.merge(e); em.flush(); } + + @Transactional + public List getEmployeesByPosition(Position p) { + List employees = em.createQuery("select e from Employee e INNER JOIN e.positions p WHERE p.id=:posit", + Employee.class) + .setParameter("posit", p.getId()) + .getResultList(); + + for (Employee e : employees) { + System.out.println(e); + } + return employees; + } } diff --git a/src/test/java/com/example/springip/CompanyServiceTests.java b/src/test/java/com/example/springip/CompanyServiceTests.java index 62166be..17ae035 100644 --- a/src/test/java/com/example/springip/CompanyServiceTests.java +++ b/src/test/java/com/example/springip/CompanyServiceTests.java @@ -107,7 +107,6 @@ public class CompanyServiceTests { Assertions.assertTrue(companyService.findCompany(c.getId()).getEmployees().contains(newEmployee)); companyService.deleteEmployee(c.getId(), newEmployee); - Company cFromDB = companyService.findCompany(c.getId()); Assertions.assertFalse(companyService.findCompany(c.getId()).getEmployees().contains(newEmployee)); employeeService.deleteAllEmployees(); diff --git a/src/test/java/com/example/springip/EmployeeServiceTests.java b/src/test/java/com/example/springip/EmployeeServiceTests.java index 7898fea..059716a 100644 --- a/src/test/java/com/example/springip/EmployeeServiceTests.java +++ b/src/test/java/com/example/springip/EmployeeServiceTests.java @@ -2,8 +2,10 @@ package com.example.springip; import com.example.springip.lab3.models.Company; import com.example.springip.lab3.models.Employee; +import com.example.springip.lab3.models.Position; import com.example.springip.lab3.service.CompanyService; import com.example.springip.lab3.service.EmployeeService; +import com.example.springip.lab3.service.PositionService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -17,6 +19,9 @@ public class EmployeeServiceTests { @Autowired private CompanyService companyService; + @Autowired + private PositionService positionService; + @Test public void testAddEmployee() { employeeService.deleteAllEmployees(); @@ -89,4 +94,30 @@ public class EmployeeServiceTests { employeeService.deleteAllEmployees(); companyService.deleteAllCompanies(); } + + @Test + public void testGetByPosition() { + employeeService.deleteAllEmployees(); + positionService.deleteAllPositions(); + + Position p = positionService.addPosition("Position 1"); + Position p2 = positionService.addPosition("Position 2"); + + final int n = 10; + for (int i = 0; i < n; i++) { + Employee e = employeeService.addEmployee("1111", "name" + i, "surname"); + if (i % 2 == 0) { + employeeService.addPosition(e.getId(), p); + } + else { + employeeService.addPosition(e.getId(), p2); + } + } + + Assertions.assertEquals(n / 2, employeeService.getEmployeesByPosition(p).size()); + Assertions.assertEquals(n / 2, employeeService.getEmployeesByPosition(p2).size()); + + employeeService.deleteAllEmployees(); + positionService.deleteAllPositions(); + } }