在for循环中使用Hibernate保存方法将对象持久化到数据库中的方法



我试图在数据库中添加多个employee对象,但只有最后一个对象被添加到数据库中。并且我只想使用循环来添加多个对象。

以下是代码。(注意-我刚开始倾斜弹簧,所以我请求您详细说明答案(

@PostMapping("/员工"(

public Employee addEmployee(@RequestBody Employee employee) {
employeeService.save(employee);
return employee;
}

@服务

公共类EmployeeServiceImpl实现EmployeyService{

@Override
@Transactional
public void save(Employee employee) {
for(int i=0;i<10;i++) {
Employee emp = getDummyEmployee(employee,i);
employee = emp;
employeeDao.save(employee);
System.out.println("After save----"+emp);
}
}
private Employee getDummyEmployee(Employee emp,int i) {
emp.setFirstName(emp.getFirstName().concat(""+i));
emp.setLastName(emp.getLastName().concat(""+i)); 
emp.setEmail(emp.getEmail().concat(""+i));
return emp;
}

}

@存储库

公共类EmployeeDAOImpl实现EmployeeDAO{

private EntityManager EntityManager;

@Autowired
public EmployeeDAOImpl(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Override
public void save(Employee employee) {
// TODO Auto-generated method stub
// get current hibernate session
Session currentSession = entityManager.unwrap(Session.class);
currentSession.save(employee);
}

}

Hibernate将实例视为manageds实体。如果更改同一实例,Hibernate将把它的值保存到数据库中,覆盖旧值。

解决方案是为每个条目创建一个新的模型实例。

@Override
@Transactional
public void save(Employee employee) {
for(int i=0;i<10;i++) {
Employee emp = getDummyEmployee(employee,i);
employee = emp;
employeeDao.save(emp);
System.out.println("After save----"+emp);
}
}
private Employee getDummyEmployee(Employee other, int i) {
Emplyee emp = new Employe();
emp.setFirstName(other.getFirstName().concat(""+i));
emp.setLastName(other.getLastName().concat(""+i)); 
emp.setEmail(other.getEmail().concat(""+i));
return emp;
}

最新更新