Prezados,
Estou iniciando no spring e estou com o seguinte problema: não consigo fazer o spring controlar (comitar as transações). Estou usando spring 2.5 e hibernate 3.
Fiz as seguintes configurações:
Spring-servlet.xml
<context:component-scan base-package="com.apress.expertspringmvc" />
<context:annotation-config />
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
@Controller
@RequestMapping({"/airport"})
@Transactional
public class AirportController extends SimpleFormController{
... codigo ...
@Override
protected ModelAndView onSubmit(Object command) throws Exception {
Airport persist = (Airport) command;
airportDAO.create(persist);
ModelAndView mav = new ModelAndView(getSuccessView());
mav.addObject("airport", persist);
return mav;
}
}
Metodo da persistencia:
@Override
public T create(T entity) {
getSession().saveOrUpdate(entity);
return entity;
}
OBS1: Se dentro do metodo create eu iniciar e comitar a transacao (na mão). funciona!
OBS2: Se na página após o envio da resquisição eu listar os registros cadastrados na base, o novo registro é exibido. Mas se eu for via banco e der um select na tabela, a mesma está travada.
Eu mato a aplicação, a tabela é liberada e o registro não é persistido.
Grato pela atenção.
