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) { public Company deleteCompany(@PathVariable Long id) {
return companyService.deleteCompany(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 jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Entity @Entity
@ -14,6 +16,8 @@ public class Company {
private String adressCompany; private String adressCompany;
@Column(nullable = false) @Column(nullable = false)
private String contactEmail; private String contactEmail;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<RequestForCooperation> requests = new ArrayList<>();
@Id @Id
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.AUTO)
@ -64,6 +68,14 @@ public class Company {
{ {
this.contactEmail = contactEmail; this.contactEmail = contactEmail;
} }
public void setList(RequestForCooperation req) {
this.requests.add(req);
}
public List<RequestForCooperation> getList()
{
return requests;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;

View File

@ -1,6 +1,8 @@
package com.example.demo.speaker.service; package com.example.demo.speaker.service;
import com.example.demo.speaker.model.Company; 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.EntityManager;
import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.EntityNotFoundException;
import jakarta.persistence.PersistenceContext; import jakarta.persistence.PersistenceContext;
@ -53,4 +55,14 @@ public class CompanyService {
public void deleteAllCompanies() { public void deleteAllCompanies() {
em.createQuery("delete from Company").executeUpdate(); 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.Date;
import java.util.List; import java.util.List;
import java.util.stream.Stream;
@Service @Service
public class RequestForCooperationService { public class RequestForCooperationService {
@PersistenceContext @PersistenceContext
@ -26,6 +28,7 @@ public class RequestForCooperationService {
} }
final RequestForCooperation report = new RequestForCooperation(name, createDate, type, text); final RequestForCooperation report = new RequestForCooperation(name, createDate, type, text);
em.persist(report); em.persist(report);
name.setList(report);
return report; return report;
} }

View File

@ -19,6 +19,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.stream.Stream;
@SpringBootTest @SpringBootTest
public class JPATests { public class JPATests {
@ -57,7 +58,43 @@ public class JPATests {
log.info(addCompany.toString()); log.info(addCompany.toString());
Assertions.assertEquals(comp, addCompany); 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 @Test
void testReportCreate() throws ParseException { void testReportCreate() throws ParseException {
requestService.deleteAllRequests(); requestService.deleteAllRequests();
@ -157,4 +194,5 @@ public class JPATests {
log.info(reports.toString()); log.info(reports.toString());
Assertions.assertEquals(0, reports.size()); Assertions.assertEquals(0, reports.size());
} }
} }