Spring boot @Transactional funktioniert nicht

Hatte ich add @Transactional auf die Methode in der service-Schicht.

@Transactional(readOnly = false)
public void add(UserFollow uf){
    UserFollow db_uf = userFollowRepository.findByUserIdAndFollowUserId(uf.getUserId(), uf.getFollowUserId());
    if(db_uf == null) { 
        userFollowRepository.save(uf);      
        userCountService.followInc(uf.getFollowUserId(), true);
        userCountService.fansInc(uf.getUserId(), true);

        throw new RuntimeException();//throw an Exception
    }
}

userFollowRepository.speichern(uf); noch retten seccessful,nicht rollback...

ich tun, damit die Transaktion-manager auf die Anwendung.

@Configuration  
@ComponentScan 
@EnableAutoConfiguration  
@EnableJpaRepositories
@EnableTransactionManagement
public class Application {  

    @Bean
    public AppConfig appConfig() {
       return new AppConfig();
    }

    public static void main(String[] args) {  
       SpringApplication.run(Application.class);  
    }  
}  

bewege ich mich @Transactional, Control-layer, es funktioniert, der code:

@Transactional
@RequestMapping(value="following", method=RequestMethod.POST)
public MyResponse follow(@RequestBody Map<String, Object> allRequestParams){
    MyResponse response = new MyResponse();

    Integer _userId = (Integer)allRequestParams.get("user_id");
    Integer _followUserId = (Integer)allRequestParams.get("follow_user_id");



    userFollowService.add(_userId, _followUserId); //this will throw an exception, then rollback


    return response;
}

kann mir jemand sagen Grund, Dank!

Sie können angeben, die Verpackungen der Klasse vor?
Und die Klassendefinitionen, die umschließt die oben genannten Methoden.
Sie brauchen nicht @EnableJpaRepositories und @EnableTransactionManagement auf Ihre Bewerbung. Klasse. Spring Boot aufzuspüren. Stellen Sie sicher, dass Ihr Dienst erkannt wird @ComponentScan auf Ihre Application Klasse. Im Idealfall müssen Sie sich nicht zu erklären, dass die AppConfig so, dass sollte aufgegriffen werden, indem die @ComponentScan.
Genauer gesagt, ist der Ruf nach @Transactional add aus der gleichen Klasse oder aus einer anderen Klasse?

InformationsquelleAutor wb_james | 2014-11-25

Schreibe einen Kommentar