Lab3 is done (+ dop task)
This commit is contained in:
parent
755388d16b
commit
47f4a4eea7
@ -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<Employee> employees = new ArrayList<>();
|
||||
|
||||
public Position() {
|
||||
|
@ -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<Employee> getEmployeesByPosition(Position p) {
|
||||
List<Employee> 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;
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user