add connection one-to-many

This commit is contained in:
DozorovaA.A 2023-04-15 10:30:54 +04:00
parent 8fca73e0a4
commit 7021f82f56
5 changed files with 70 additions and 1 deletions

View File

@ -51,6 +51,10 @@ public class CompanyController {
public Company deleteCompany(@PathVariable Long id) {
return companyService.deleteCompany(id);
}
@GetMapping("/list={id}")
public List<RequestForCooperation> getRequestsOfCompany(@PathVariable Long id)
{
return companyService.findCompany(id).getList();
}
}

View File

@ -2,6 +2,8 @@ package com.example.demo.speaker.model;
import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Entity
@ -14,6 +16,8 @@ public class Company {
private String adressCompany;
@Column(nullable = false)
private String contactEmail;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<RequestForCooperation> requests = new ArrayList<>();
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@ -64,6 +68,14 @@ public class Company {
{
this.contactEmail = contactEmail;
}
public void setList(RequestForCooperation req) {
this.requests.add(req);
}
public List<RequestForCooperation> getList()
{
return requests;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;

View File

@ -1,6 +1,8 @@
package com.example.demo.speaker.service;
import com.example.demo.speaker.model.Company;
import com.example.demo.speaker.model.RequestForCooperation;
import com.example.demo.speaker.model.TypeOfRequestEnum;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityNotFoundException;
import jakarta.persistence.PersistenceContext;
@ -53,4 +55,14 @@ public class CompanyService {
public void deleteAllCompanies() {
em.createQuery("delete from Company").executeUpdate();
}
@Transactional
public List<RequestForCooperation> getTypesRequests(Long id, TypeOfRequestEnum type)
{
final Company comp = findCompany(id);
var list = comp.getList();
List<RequestForCooperation> res = list.stream().
filter(r -> r.getType() == type).toList();
return res;
}
}

View File

@ -13,6 +13,8 @@ import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
import java.util.stream.Stream;
@Service
public class RequestForCooperationService {
@PersistenceContext
@ -26,6 +28,7 @@ public class RequestForCooperationService {
}
final RequestForCooperation report = new RequestForCooperation(name, createDate, type, text);
em.persist(report);
name.setList(report);
return report;
}

View File

@ -19,6 +19,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Locale;
import java.util.stream.Stream;
@SpringBootTest
public class JPATests {
@ -57,7 +58,43 @@ public class JPATests {
log.info(addCompany.toString());
Assertions.assertEquals(comp, addCompany);
}
@Test
void checkConnectionCompanyAndRequest() throws ParseException {
requestService.deleteAllRequests();
companyService.deleteAllCompanies();
final Company comp = companyService.addCompany("Mars", "Ульяновск, Солнечная 19",
"Солнечная 19", "mars@mail.ru");
final TypeOfRequestEnum type = TypeOfRequestEnum.TRACKING;
RequestForCooperation report = requestService.addRequest(comp,
formatter.parse("05-Jun-2018"),
type, "Хотим сотрудничать");
report = requestService.addRequest(comp,
formatter.parse("18-Jun-2018"),
type, "Хотим сотрудничать");
var listRequest = comp.getList();
Assertions.assertEquals(2, listRequest.size());
}
@Test
void checkConnectionRequestAndCompany() throws ParseException {
requestService.deleteAllRequests();
companyService.deleteAllCompanies();
final Company comp = companyService.addCompany("Mars", "Ульяновск, Солнечная 19",
"Солнечная 19", "mars@mail.ru");
final TypeOfRequestEnum type = TypeOfRequestEnum.TRACKING;
RequestForCooperation report = requestService.addRequest(comp,
formatter.parse("05-Jun-2018"),
type, "Хотим сотрудничать");
report = requestService.addRequest(comp,
formatter.parse("18-Jun-2018"),
type, "Хотим сотрудничать");
List<Company> listCompany = requestService.findAllRequests().
stream().map(p -> p.getName()).toList();
Assertions.assertEquals(1, listCompany.size());
}
@Test
void testReportCreate() throws ParseException {
requestService.deleteAllRequests();
@ -157,4 +194,5 @@ public class JPATests {
log.info(reports.toString());
Assertions.assertEquals(0, reports.size());
}
}