Estou com um problema com o Spring 3.1 com a anotação @Transational
No primeiro caso, que é o que eu gostaria que funcionasse fica assim:
ele faz o persist normalmente no metodo2, mas não executa a procedure
@Service
public class Service{
@Autowired
private Dao dao;
@Transational
public void metodo(String asdf){
metodo2(asdf);
metodo3(asdf);
}
private void metodo2(String asdf){
dao.save(asdf);
}
private void metodo3(String asdf){
dao.callProcedure(asdf);
}
}
@Repository
public class Dao{
public void save(String asdf){
// Implementacao
}
public void callProcedure(){
// Implementacao
}
}
E no segundo caso, mudo o @Transational para o Dao, e os 2 metodos são executados normalmente, porem gostaria de deixar no @Transational na camada de services:
@Service
public class Service{
@Autowired
private Dao dao;
public void metodo(String asdf){
metodo2(asdf);
metodo3(asdf);
}
private void metodo2(String asdf){
dao.save(asdf);
}
private void metodo3(String asdf){
dao.callProcedure(asdf);
}
}
@Repository
public class Dao{
@Transational
public void save(String asdf){
// Implementacao
}
@Transational
public void callProcedure(){
// Implementacao
}
}
Alguem sabe pq isso acontece?