[英]Way to persist object in db using Hibernate save method in for loop
我正在尝试在数据库中添加多个员工对象,但只有最后一个 object 被添加到数据库中。 我只想使用循环来添加多个对象。
以下是代码。 (注意 - 我刚开始学习 spring 所以我请你详细说明答案)
@PostMapping("/雇员")
public Employee addEmployee(@RequestBody Employee employee) {
employeeService.save(employee);
return employee;
}
@服务
公共 class EmployeeServiceImpl 实现 EmployeeService {
@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;
}
}
@存储库
公共 class EmployeeDAOImpl 实现 EmployeeDAO{
私有实体管理器实体管理器;
@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 将实例视为托管实体,如果您更改同一实例 hibernate 会将其值保存到数据库中以覆盖旧值。
解决方案是为每个条目创建一个 model 的新实例。
@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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.