В EmployeeRepository
создайте следующий метод:
findOneByEmpIdAndSalary(Integer empId, Float salary);
Затем вы можете передать salary = 1000.0
или создать метод по умолчанию в том же хранилище с таким значением hardcoded;
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
Optional<Employee> findOneByEmpIdAndSalary(Integer empId, Float salary);
default Optional<Employee> findOneByEmpIdAndSalaryEqualTo1000(Integer empId) {
return findOneByEmpIdAndSalary(empId, 1000.0);
}
}
Я использовал findOne
, так как вы уже выбираете с помощью первичного ключа плюс дополнительное условие, так что вы получите либо один, либо ни одного, таким образом, используя Optional<T>
в качестве результата, для управлениялюбая возможность лучше.
После извлечения этой сущности в состоянии @Transactional
просто обновите полученную сущность.Если Optional
не пусто, то окончание транзакции будет фиксировать это обновление в БД, иначе ничего.
@Transactional
public String updateWithCondition(Integer empId) {
employeeRepository.findOneByEmpIdAndSalaryEqualTo1000(empId)
.ifPresent(employee -> employee.setState("desired Update"));
}
Как в приведенном выше фрагменте в качестве примера.