0
我想加载弹簧启动应用程序与预先存在的数据。我想用“系统”用户填充数据。我有下面的组件定义被拦截并创建一个“系统”用户。问题是此组件事务在针对H2运行弹簧引导应用程序时被提交到数据库,但它是当应用程序与PostgreSQL数据源一起运行时,它不会被提交。请帮我弄清楚如何让交易成功?SpringBoot应用程序 - AuditorAware事务不提交Postgres数据库
被覆盖的实施getCurrentAuditor方法是如下
@Transactional
@Component("auditorProvider")
public class UserAuditorAware implements AuditorAware<User> {
@Inject
private UserRepository userRepository;
private User _systemUser;
@Override
public User getCurrentAuditor() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null) {
if (_systemUser != null) {
return _systemUser;
}
Optional<User> systemUser = userRepository.findOneByUsername("system");
if (!systemUser.isPresent()) {
// TODO: decide on which user to designate when entities are created by devices
User user = new User("system");
user = userRepository.save(user);
userRepository.flush();
systemUser = Optional.of(user);
}
_systemUser = systemUser.get();
return _systemUser;
}
CurrentUser userDetails = (CurrentUser) authentication.getPrincipal();
return userDetails.getUser();
}
}
的主应用程序类具有以下注释。
@ComponentScan
@EnableAutoConfiguration(exclude = { MetricFilterAutoConfiguration.class, MetricRepositoryAutoConfiguration.class, SecurityAutoConfiguration.class })
public class Application {
...