Я создал комплекс JSON с использованием вложенного класса.
employees{
employeeCode
name:"LION",
address:"",
jobs{
jobCode:1
jobName:"developer",
jobDescription:""
},
salary{
salaryCode:xxx
fisrtMonth:xxx
fromSecondMonth:xxx
}
Данные получены из 3 таблиц (сотрудник, работа, зарплата) с несколькими полями (100 полей / таблица).
Теперь, чтобы установить данные для JSON, у меня есть два варианта:
- Использование JPA для получения 3-х сущностей, после чего с помощью сопоставителя моделей для сопоставления этих сущностей с классом dto.
Employee employee = employeeRepository.findById(employeeCode);
Job job = jobRepository.findById(jobCode);
Salary salary = salaryRepository.findById(salaryCode);
EmployeeDTO dto = new EmployeeDTO();
this.modelmapper.map(employee, dto);
this.modelmapper.map(job, dto);
this.modelmapper.map(salary, dto);
Создайте собственный запрос для получения данных из 3 таблиц, после этого установите значение для класса dto.
MemberRepository.java
@query="SELECT"
+ "e.employeeCode,"
+ "e.name,"
+ "e.address,"
+ "j.jobCode,"
+ "j.jobName,"
+ "j.jobDescription,"
+ "s.salaryCode,"
+ "s.fisrtMonth,"
+ "s.fromSecondMonth"
+ "FROM Employee e"
+ "INNER JOIN Job j on e.jobCode = j.jobCode"
+ "INNER JOIN salary on e.salaryCode = s.salaryCode"
+ "WHERE e.employeeCode=?1"
,nativeQuery=true)
List<Object[]> getEmployeeInfo(int employeeCode);
EmployeeService.java
List<Object[]> employeeInfoList = this.employeeRepository.getEmployeeInfo(employeeCd);
//loop employeeInfoList and set data to DTO
что мне делать? какой лучший выбор?