当前位置: 首页 > 知识库问答 >
问题:

在mybatis强化课程中使用Javer

夏侯星洲
2023-03-14

我正在使用mybatis来持久化我的实体。启用延迟加载实体集合/关联时,mybatis将代理相应的实体。

当保存这些实体时,我想使用javers来确定到底发生了什么变化。这似乎不是玩javers。

javers是否提供了一个非代理钩子,以便可以与mybatis一起开箱使用?

另一种方法是手动“取消固定”mybatis类。

示例代码

    /**
     * @param t The entity to be created or updated by this repository
     * @return The new entity state after it was created or updated
     */
    @Override
    @Transactional
    public T save(T entity) {
        try {
            int affectedRows;
            T oldEntity = mapper.selectById(this.getId(entity));
            if (oldEntity != null) {
                Diff diff = 
                       this.getEntityComparator().compare(oldEntity,entity);
                // publish here changes to event sourcing                    
                affectedRows = mapper.update(entity);
                if (affectedRows != 1) throw new RepositoryException();
            } else {
                affectedRows = mapper.create(entity);
                if (affectedRows != 1) throw new RepositoryException();
            }
            return mapper.selectById(this.getId(entity));
        } catch (DataAccessException ex) {
            throw this.getRepositoryException(ex);
        }
    }

编辑:这里有一个关于“取消验证”mybatis对象的相关(未回答)问题:如何将mybatis Javassis代理对象转换为源对象(取消验证对象)?

共有1个答案

乐正涵忍
2023-03-14

您可以实现一个ObjectAccessHook,并使用JaversBuilder注册它。withObjectAccessHook()

看看Hibernate是怎么做的https://javers.org/documentation/spring-integration/#hibernate-反固定钩

 类似资料:
  • 问题内容: 我对Python不太熟悉。所以我在编码时遇到了一些问题。 在 功能块中* 使用 功能名称 是很正常的,例如: * 但是,当我尝试在 类块中* 使用 类名 时,出现了问题: * 尽管下面的代码可以: 然后,我使用statement调试这两个代码。我发现 类块 中的全局变量dict不包含,而 功能块 中的全局变量dict 包含了它。 因此,似乎类名称绑定是在执行 类块 之后,在执行 功能块

  • 问题内容: 我正在尝试制作一个屏幕捕获程序。 我所拥有的是一个透明窗口,该窗口将提供要捕获的区域并带有一个按钮,并且我试图实例化一个在使用命令提示符单独执行时有效的类 我试图在按下按钮时实例化此类。 我尝试将其保留在我的代码中,也将代码放入其中。在这两种情况下,我都会得到这些错误 在 和IOException 一致。 保持独立无济于事。甚至什么都不打印。 这是我的代码 并且,可以单独正常工作。 欢

  • 问题内容: 我该如何与正在测试的班级中的Mockito其他班级进行模拟? 例如: MyClass.java 任何东西PerformerClass.java 并测试: 我是否可以欺骗以排除不必要的逻辑?我可以重写方法来简单地返回还是? 为什么指定Mockito,因为在Robolectric进行Android测试时需要它。 问题答案: 您可以重构,以便它使用依赖注入。不用让它创建实例,您可以将类的实例

  • 本文向大家介绍MyBatis学习教程(三)-MyBatis配置优化,包括了MyBatis学习教程(三)-MyBatis配置优化的使用技巧和注意事项,需要的朋友参考一下 一、连接数据库的配置单独放在一个properties文件中   之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下:   其实我们完全可以将数据库的连接配置信息写在一个properties文件中

  • 关于使用强化代码注释的名称和语法,我有一个问题。 简短、简短、非常简短的版本是:我正在寻找一个指南/手册,它将列出可用的代码内注释,并为它们的预期用途提供一个示例。专门用于从Fortify扫描结果中省略一组“SQL注入”和“SQL注入:持久性”问题。 TL;博士;细节: 强化版:19.1.0 平台:Java 8;Web App(Weblogic 12.2.1.4.0(12c));Redhat Un

  • 我是谷歌教室api新手,我想在本地机器上创建一门课程。我能不能做?如果创建,那么如何使用javascript?在我尝试时,代码出错= 在我的代码中,我使用函数create课程()来创建一个新的课程。 我的代码如下所示 请回复我。。。。。。。。。。