我试图在同一个user_friend db表中保存这个朋友关系,但只在方法结束时才在db 1中保留。
@Override
@Transactional(readOnly = false)
public boolean saveLocalFriends(UserFriend userFriend) {
UserFriend userFriendToRevert = userFriend;
if (this.friendDao.saveFriend(userFriend)) {
userFriendToRevert.revert();
return this.friendDao.saveFriend(userFriendToRevert);
}
return false;
}
基于@macias贡献的好方法。
@Override
@Transactional(readOnly = false)
public boolean saveLocalFriends(UserFriend userFriend) {
UserFriend userFriendToRevert = new UserFriend();
BeanUtils.copyProperties(userFriend, userFriendToRevert);
if (this.friendDao.saveFriend(userFriend)) {
userFriendToRevert.revert();
return this.friendDao.saveFriend(userFriendToRevert);
}
return false;
}
答案 0 :(得分:1)
在您发布的方法中,单个实体会保存两次。我不确定 revert 方法的作用,但我认为它只是以某种方式改变了UserFriend的状态。第二次保存将基本覆盖第一次保存。注意
UserFriend userFriendToRevert = userFriend;
仅复制参考。如果你的目的是坚持修改userFriend的副本,你需要做的很难 - 构建一个新的UserFriend对象并逐个复制属性,然后保留副本。