我有一个简单的文档类:
public class Player {
private String name;
private String age;
}我想用字段参数来扩展它:
public class Player {
private String name;
private String age;
private Parameters parameters;
public class Parameters {
boolean leftFooted;
boolean leftHanded;
}
} 我的Mongock @Execution方法是:
@Execution
public void execution(PlayerRepository playerRepository) {
playerRepository.findAll()
.stream()
.map(this::setDefaultParameters)
.forEach(playerRepository::save);
}用方法:
private Player setDefaultParameters(Player player) {
if (player.getParameters == null) {
player.setParameters(new Parameters(false, false));
}
return player;
}我的问题是-如何实现@RollbackExecution方法?如果在模型扩展后创建的文档也可以有值为'false,false‘的参数字段,而我只是不能为数据库中的所有文档设置参数字段为null?
发布于 2022-10-10 16:06:47
首先,我是否正确地假设,在执行@Execution方法之前,可能有一些文档已经具有具有一定值的parameters字段?而且,在执行之后,您很难识别那些在实际更改单元中修改的内容,还是那些已经具有参数字段的更改单元呢?
如果是这样的话,您实际上没有破坏任何东西,您将保留@RollbackExecution为空,更新后的文档将保留其默认值在parameters字段中。
如果您仍然关心,您需要以某种方式标记您在ChangeUnit中更新的文档(使用一个标志或其他什么),这样您就可以使用该标志进行筛选并恢复您的更改。
https://stackoverflow.com/questions/73986120
复制相似问题