Я пробовал jpql-запросы, но он дает ответ в паре ключ-значение.
С JsonObject выдает ошибку.
Я не могу суммировать сумму зарплаты, передав дата и номер отдела Я не могу сопоставить EmployeeDto с классом Employee.
Мне нужен ответ имени сотрудника и оклада сотрудника. Я уже добавил сотрудника по идентификатору отдела, а зарплата - по идентификатору сотрудника.
Теперь я должен подсчитать, к какому отделу принадлежит работник и какова зарплата.
Это мой модальный класс зарплаты. Эта зарплата сохраняется.
@Entity
@Table(name = "salary")
@Getter
@Setter
public class EmployeeSalary implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotEmpty(message = "Salary Number Should Not Be Empty")
private String salaryNumber;
private int salaryAmount;
@NotEmpty(message = "Salary Type Should Not Be Empty")
private String salaryType;
@NotEmpty(message = "Salary Way Should Not Be Empty")
@Pattern(regexp = "^[\\p{L} .'-]+$", message = "Salary way has invalid characters")
private String Salary Way;
@CreationTimestamp
@Temporal(TemporalType.TIME)
private Date salaryPassTime;
private String salaryPassDate;
@ManyToOne
@JoinColumn(name = "Employee_id")
@JsonIgnore
private EmployeeRegister employee;
}
Это модальный класс моего сотрудника. В этом классе модели Employee зарегистрирован.
@Entity
@Getter
@Setter
@Table(name = "add_employee")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotEmpty(message = "Employee name should not be empty")
private String employeeName;
@Email
private String employeeEmail;
private String employeePassword;
private String employeeImage;
private String EmployeeMobileNo;
@ManyToOne
@JoinColumn(name = "department_id")
@JsonIgnore
private Department department;
@OneToMany
private List<EmployeeSalary> salary;
}
Это мой класс EmployeeDto
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class EmployeeDto {
private String employeeName;
public String employeeSalary;
}
Это мой класс контроллера
@Autowired
private CommonServices service;
@Autowired
private Service test;
@GetMapping("/getAllEmployeeById/{departmentid}/{salarydate}")
public ResponseEntity<Object> getAllDepartmentEmployee(@PathVariable("departmentid") int departmentid,@PathVariable(value = "salarydate")String salarydate)throws ResourceNotFoundException{
List<Employee> itemList = service.retriveAllEmployee(departmentid);
EmployeeDto targetEmployeeDto=new EmployeeDto();
List itemList1=test.getTestDone(date);
if(itemList.isEmpty()){
response.put("status","Failure");
response.put("message","Department idNot Exist!!");
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(response);
}else {
}
return new ResponseEntity<Object>(itemList1,HttpStatus.OK);
}
Это мой класс обслуживания
@Query(value = " select add_employee.employee_name,SUM(salary.salary_amount)"
+ "from add_employee,salary where add_employee.id=salary.employee_id and salary_pass_date =:date group by employee_id",nativeQuery = true)
public List getTestDone(String date);
Мой результат будет таким: У меня
[
[
"j",
40
],
[
"jj",
20
]
]
Но Я хочу, чтобы ответ был в этом формате (иногда он говорит о проблеме преобразования).
{
"employeeName":"j",
"employeeSalary:"40"
},
{
"employeeName":"jj",
"employeeSalary:"20"
}