我正在将Spring Boot与Solr一起使用。
我可以在已解决的依赖项中看到Spring-tx。
当我在Spring bean中调用带有@Transactional
注释的方法时,
a)在运行时,我看不到任何包裹在任何事务管理代理中的迹象,并且
b)当方法抛出RuntimeException
时,数据不会回滚。
电子邮件/电话存储库以及扩展接口
org.springframework.data.solr.repository.SolrCrudRepository
我想念什么?
在接口和实现中都标注了@Transactional
的方法,以防万一;-)
public interface MyServiceInterface {
@Transactional
public CreateDetailsResponse createAllDetails(
final CreateDetailsRequest createDetailsRequest) throws BusinessException;
}
public class MyService implements MyServiceInterface {
@Autowired
private EmailRepository emailRepository;
@Autowired
private EmailRepository phoneRepository;
@Transactional
public CreateDetailsResponse createAllDetails(
final CreateDetailsRequest createDetailsRequest) throws BusinessException {
//method below calls emailRepository.save(emailDocument)
saveEmail();
//method below is supposed to call phoneRepository.save(phoneDocument)
//but throws RuntimeException before save is called
savePhone();
}
//...
}
@Configuration
@EnableSolrRepositories(basePackages = "com.....repository", multicoreSupport = true,
considerNestedRepositories = true, repositoryBaseClass = SoftCommitSimpleSolrRepository.class)
@EnableAutoConfiguration
public class ConsumersServiceConfiguration {
//...
@Bean
public MyServiceInterface myService() {
return new MyService();
}
}
Solr应该支持事务: