Вызов Save () после findAll () в репозитории JPA - PullRequest
1 голос
/ 06 августа 2020

Я работаю над проектом SpringBoot и использую Spring JPA. У меня есть сценарий, в котором мне нужно получить все записи, а затем обновить их после модификации. Например,

 @Entity
 @Table(name="Employee")
 public class Employee{
   
   @ID
   @Column(name="ID")
   Long id;

   @Column(name="age")
   private  int age;
   
   @Column(name="name")
   private  String name;

   @Embedded
   private Address address

   //TODO getters and setters goes below
 }

, а затем в репозитории

@Repository
public interface EmployeeRepository extends JPARepository<Employee, Long>{
}

и в службе, которую я пытаюсь, как показано ниже:

@Service
public class EmployeeService{
 
  @Autowired
  EmployeeRepository repository;

 @Transactional
 public void updateEmployee(){
     List<Employee> list = repository.findAll();
     for(Employee employee :list) {

      employee.setAge(employee.getAge()+4);
     
      repository.save(employee); //This is not working.
     }
  }
}

Сохранить не работает и не бросает Ошибка. Я также пробовал saveAndFlu sh (), но не работал. Кто-нибудь может мне помочь. Я хочу, чтобы мои объекты обновлялись.

1 Ответ

1 голос
/ 07 августа 2020

Я попытался воссоздать вашу проблему, но не могу воспроизвести вашу ошибку.

Tried to replicate your issue here

My entities get updated with this perfectly fine.

После обновлений

Вы говорите, что делаете больше logi c, чем это, пробовали ли вы распечатать свои объекты после того, как сделали сохранение, чтобы увидеть, было ли что-то обновлено, и что это не удается в другом разместить в своем коде?

Приведенный выше код обновляет все сущности, как и ожидалось :)

logging.level.org.hibernate.SQL=TRACE

Добавьте это в файл application.properties / yaml для дополнительной трассировки SQL операторов

...