这个不太了解 欢迎指点
hibernate有几种状态 瞬时态 持久态 游离态
https://blog.csdn.net/lan12334321234/article/details/70049407
不能确保对象时游离态的状态下对对象进行赋值操作可能会被存到数据库
最简单的方法的new一个去保存这个对象
比如下边这个 注释掉那几行 放开后 数据库中的值就会相应变化
@Override
public List<AlertAccount> findByUserIdAndType(String id, SendWay weChat) {
List<AlertAccount> accountList = alertAccountRepository.findByUserIdAndType(id, weChat);
// for(AlertAccount account:accountList){
account.setName(userService.findById(account.getUserId()).getUserName());
// account.setName(account.getAccount());
// }
return accountList;
}
当时解决办法是New了一个
accountList = alertAccountService.findByUserIdAndType(userId, type);
List<AlertAccount> list = new ArrayList<>(accountList);
for(AlertAccount account:list){
account.setName(account.getAccount());
}
return list;
还有一种办法 没亲自尝试
dao层继承EntityManager 调用detach方法 把对象变为游离态
https://blog.csdn.net/tantexian/article/details/50523270