2016-03-24 95 views
0

我遇到了试图让MyBatis和Javers(与Spring)集成和工作的问题。我遵循http://javers.org/documentation/spring-integration/的说明并获得了Aspect设置,并注释了我的实体类,并使用Javers注册了它,MyBatis接口在适当的方法上正确注解了@Repository和@JaversAuditable,但仍然没有得到它的工作,甚至在Javers方面设置断点,但没有任何触发。需要Javers和MyBatis集成帮助

我也按照http://www.mybatis.org/mybatis-3/configuration.html#plugins(然后使用http://www.mybatis.org/spring/xref-test/org/mybatis/spring/ExecutorInterceptor.html作为提交的基本示例)使用MyBatis插件拦截器,以另一种方式去了解它。然而,当它触发时,它并​​没有达到我的预期,而且基本上只是commit方法的一个方面,它需要一个布尔值而不是包含正在提交的实体,这会让我将它们传递给Javers。我想我可以在更新/插入MyBatis方法上添加一个拦截器,然后将它存储在一个ThreadLocal或类似的地方,这样当调用commit/rollback时,我可以根据需要将它传递给Javers,但这很麻烦。

我不知道该从哪里出发,除非有人能看到我用这两种方法之一遗漏的东西。

回答

0

因此,在我的困惑中,我意识到,由于MyBatis为Mapper接口生成具体对象,因此Spring永远不会创建该对象,只是最终对象在上下文中注册为Bean。因此,Javer从未有机会处理Bean,因为它是为了执行任何代理或不必要的操作而创建的。

所以,傻我。所以我最终创建了一个Spring-Data @Repository层,它大多只是将调用传递给Mapper。虽然在更新中,我正在做一些额外的DAO垫层(正如我所说的那样)适用。