首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongock中@RollbackExecution方法的实现

Mongock中@RollbackExecution方法的实现
EN

Stack Overflow用户
提问于 2022-10-07 10:57:10
回答 1查看 43关注 0票数 1

我有一个简单的文档类:

代码语言:javascript
复制
public class Player {
    private String name;
    private String age;
}

我想用字段参数来扩展它:

代码语言:javascript
复制
public class Player {
    private String name;
    private String age;
    private Parameters parameters;

    public class Parameters {
        boolean leftFooted;
        boolean leftHanded;
    }
} 

我的Mongock @Execution方法是:

代码语言:javascript
复制
@Execution
public void execution(PlayerRepository playerRepository) {

    playerRepository.findAll()
            .stream()
            .map(this::setDefaultParameters)
            .forEach(playerRepository::save);
}

用方法:

代码语言:javascript
复制
private Player setDefaultParameters(Player player) {
    if (player.getParameters == null) {
        player.setParameters(new Parameters(false, false));
    }

    return player;
}

我的问题是-如何实现@RollbackExecution方法?如果在模型扩展后创建的文档也可以有值为'false,false‘的参数字段,而我只是不能为数据库中的所有文档设置参数字段为null?

EN

回答 1

Stack Overflow用户

发布于 2022-10-10 16:06:47

首先,我是否正确地假设,在执行@Execution方法之前,可能有一些文档已经具有具有一定值的parameters字段?而且,在执行之后,您很难识别那些在实际更改单元中修改的内容,还是那些已经具有参数字段的更改单元呢?

如果是这样的话,您实际上没有破坏任何东西,您将保留@RollbackExecution为空,更新后的文档将保留其默认值在parameters字段中。

如果您仍然关心,您需要以某种方式标记您在ChangeUnit中更新的文档(使用一个标志或其他什么),这样您就可以使用该标志进行筛选并恢复您的更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73986120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档