У меня есть две весенние конфигурации источника данных, которые выглядят так:
@EnableJpaRepositories(basePackages = {"XXXXXX",
"XXXXXX"}, entityManagerFactoryRef = "postgreSqlEM", transactionManagerRef = "postgreSqlTM")
@EnableTransactionManagement
@Configuration
public class PostgreSqlDataSourceConfig {
@Primary
@Bean
@ConfigurationProperties("spring.postgresql.hikari")
public HikariConfig postgreSqlHikariConfig() {
return new HikariConfig();
}
@Primary
@Bean
public DataSource postgreSqlDataSource() {
return new HikariDataSource(postgreSqlHikariConfig());
}
@Primary
@Bean("postgreSqlEM")
public LocalContainerEntityManagerFactoryBean postgreSqlEntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder.dataSource(postgreSqlDataSource()).packages("XXXXXX",
"XXXXXX",
"XXXXXX")
.build();
}
@Primary
@Bean("postgreSqlTM")
public JpaTransactionManager postgreSqlTransactionManager(@Qualifier("postgreSqlEM") EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
@Primary
@Bean
public EntityManager getEntityManager(@Qualifier("postgreSqlEM") EntityManagerFactory emf) {
return emf.createEntityManager();
}
}
Это @Primary, поэтому на него должны указывать все @Transactional без конфигурации значений, а также все инъекции EntityManager.
Spring-загрузка запускается правильно, но все аннотации @Transactional игнорируются.
Я получаю сообщения об ошибках, подобных этому:
javax.persistence.TransactionRequiredException: javax.persistence.Query.executeUpdate requires active transaction
Как правильно настроить его, чтобы @Transactionalработает?
Я на весенней загрузке 2.1.5. RELEASE.