MYSQL: последний раз, когда пользователь был активным в течение определенного периода времени [дубликат]

Проблема в этой строке

public Employee createEmployee(@Valid @RequestBody List<Employee> employee) {
        return employeeService.save(employee);  //  Problem 
} 

employeeService.save может принимать только один объект Entity в вашем случае Employee

Существует 2 способа

1.

public Boolean createEmployee(@Valid @RequestBody List<Employee> lstEmployee) {
    try{
        for(Employee emp : lstEmployee){
            employeeService.save(employee);
        }
        return true;
    }catch(Exception e){}
    return false;
}

2.

Используйте saveAll вместо

public Employee createEmployee(@Valid @RequestBody List<Employee> employee) {
        return employeeService.saveAll(employee);  
}

Редактировать 1:

После добавления класса обслуживания похоже, что вы вручную реализуете так

Вариант 1:

Я бы предложил вам прямо использовать EmployeeRepository в вашем классе контроллера. Так как при ручном переопределении методов вы фактически не пользуетесь репозиторием

@Autowired
EmployeeRepository employeeRepository;

@PostMapping("/api/employee/save")
public Employee createEmployee(@Valid @RequestBody List<Employee> lstEmployee) {
        return employeeRepository.saveAll(lstEmployee);
}

Вариант 2:

Дольше, измените свою реализацию следующим образом. Для объекта может быть некоторая ошибка, но она должна дать вам идею

public interface employeeService{

    Employee save(Employee employee);

    public <S extends User> List<S> saveAll(Iterable<S> entites);



}

@Service("employeeService")
public class EmployeeServiceImpl implements EmployeeService {

    @Autowired
    EmployeeRepository employeeRepository;

    @Override
    public Employee save(Employee employee) {
        return employeeRepository.save(employee);
    }

   @Override
    public List<Employee> saveAll(List<Employee> employee) {
        return employeeRepository.saveAll(employee);
    }

}
0
задан Strawberry 20 January 2019 в 01:00
поделиться

1 ответ

Это можно сделать с помощью коррелированного подзапроса, например:

SELECT u.*
FROM usertrack u
WHERE NOT EXISTS (
    SELECT 1 FROM usertrack u1 WHERE u1.ts > u.ts AND u1.uid = u.uid
) AND ts >= NOW() - INTERVAL 43830 MINUTE 
0
ответ дан GMB 20 January 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: