Spring 中 getOne(long id) 的可行替代方案是什么
What is a viable alternative to getOne(long id) in Spring
我正在 Spring 服务中编写一个 update
方法,它说 getOne() 已被弃用,我已经审查了替代方案并且 findById(long id)
似乎是首选,但我正在努力使它在我的案例中起作用。
我想更新保存在数据库中的对象的 name
字段。然后我想用更新后的名称将它重新保存在数据库中。
我最初使用 getOne()
获得此代码
Society inDb = societyRepo.getOne(id);
inDb.setName(societyUpdate.getName());
societyRepo.save(inDb);
我尝试修改如下,
Optional<Society> soc = societyRepo.findById(id);
soc.ifPresent(society -> society.setName(society.getName()));
societyRepo.save(soc);
但由于 soc
现在是可选的,我无法将其保存回数据库中。
是否可以在 SocietyRepo Society findbyId(long id);
中编写另一个方法,这样我就可以使用 Society s = societyRepo.findById(id); to get the
Societyfrom the database, update the
name` 字段,然后重新保存在数据库中?
假设这一切都发生在单个事务中,您实际上不需要调用 save
。
如果它不在单个事务中,或者为了清楚起见,您希望保留对 save
的调用,以下将起作用:
societyRepo.findById(id)
.ifPresent(society -> {
society.setName(societyUpdate.getName());
societyRepo.save(soc);
});
注意:我将 society.getName
更改为 societyUpdate.getName
,假设这是您的错字。
我正在 Spring 服务中编写一个 update
方法,它说 getOne() 已被弃用,我已经审查了替代方案并且 findById(long id)
似乎是首选,但我正在努力使它在我的案例中起作用。
我想更新保存在数据库中的对象的 name
字段。然后我想用更新后的名称将它重新保存在数据库中。
我最初使用 getOne()
Society inDb = societyRepo.getOne(id);
inDb.setName(societyUpdate.getName());
societyRepo.save(inDb);
我尝试修改如下,
Optional<Society> soc = societyRepo.findById(id);
soc.ifPresent(society -> society.setName(society.getName()));
societyRepo.save(soc);
但由于 soc
现在是可选的,我无法将其保存回数据库中。
是否可以在 SocietyRepo Society findbyId(long id);
中编写另一个方法,这样我就可以使用 Society s = societyRepo.findById(id); to get the
Societyfrom the database, update the
name` 字段,然后重新保存在数据库中?
假设这一切都发生在单个事务中,您实际上不需要调用 save
。
如果它不在单个事务中,或者为了清楚起见,您希望保留对 save
的调用,以下将起作用:
societyRepo.findById(id)
.ifPresent(society -> {
society.setName(societyUpdate.getName());
societyRepo.save(soc);
});
注意:我将 society.getName
更改为 societyUpdate.getName
,假设这是您的错字。