Spring boot 在JPA存储库中的findAll()之后调用Save()

Spring boot 在JPA存储库中的findAll()之后调用Save(),spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,我正在从事一个SpringBoot项目并使用SpringJPA。 我有一个场景,我需要获取所有记录,然后在修改后更新它们。 比如说 @Entity @Table(name="Employee") public class Employee{ @ID @Column(name="ID") Long id; @Column(name="age") private int age;

我正在从事一个SpringBoot项目并使用SpringJPA。 我有一个场景,我需要获取所有记录,然后在修改后更新它们。 比如说

 @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>{
}
@存储库
公共接口EmployeeRepository扩展了JPARepository{
}
在服务中,我尝试如下:

@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.
     }
  }
}
@服务
公营雇员服务{
@自动连线
雇员安置库;
@交易的
public void updateEmployee(){
List=repository.findAll();
用于(员工:列表){
employee.setAge(employee.getAge()+4);
repository.save(employee);//这不起作用。
}
}
}

Save既不起作用也不会抛出任何错误。我也尝试过saveAndFlush(),但不起作用。谁能帮帮我吗。我希望更新我的对象。

我试图重新创建您的问题,但无法重现您的错误

我的实体得到了完美的更新

你说你正在做更多的逻辑工作,你有没有试过在保存后打印出你的实体,看看有没有什么东西被更新了,并且在代码的另一个地方失败了

上述代码按预期更新了所有实体:)



将其添加到application.properties/yaml文件中,以进一步跟踪SQL语句

嵌入的@Embedded地址是什么?这是列的分组吗?你能发布生成的查询吗?设置
spring.jpa.show sql=true
以在日志中查看它。是否确实在第行获得了员工列表:
list list=repository.findAll()?@Ayush28是。我能看到你的名单employees@George,我不会在保存操作期间生成任何sql。看起来这个查询甚至没有被解雇。好像什么都没发生。列表中有多条记录。@VinayPandey您启用JPA存储库了吗?我不能使用saveAll,因为后面还有一些代码。我只想一个接一个地更新obects。另外,如果save()不起作用,那么saveAll应该怎么起作用呢?我试图复制您的问题,但对我来说效果很好,所以肯定还有其他问题:)您可以共享更多代码吗?也许将日志记录级别更改为debug可以帮助您了解幕后发生的情况。是的,通过添加“logging.level.org.hibernate.SQL=TRACE”对于application.properties/yaml文件,您将能够看到幕后发生的事情:)感谢所有试图帮助我的人。它工作正常,这是我的错误,我能够在事务完成后看到表中的数据。而且我最初是用单元测试来测试它的,所以在测试完成后,所有更改都被回滚了,我一直感到困惑。道歉。
logging.level.org.hibernate.SQL=TRACE