今天在SpringBoot中Hibernate進行數據save時,不報錯,也不進行數據保存,問題分析因爲了在支持Hibernate的Lazy init,初步懷疑是hibernate的session沒有關閉,在openSessionInViewFilter中提定FlushMode爲AUTO,或者Commit
/***
* 增加Hibernate的Lazy init 支持
* @return
*/
@Bean
public FilterRegistrationBean openSessionInViewFilterRegistrationBean() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
OpenSessionInViewFilter filter = new OpenSessionInViewFilter();
filterRegistration.setFilter(filter);
filterRegistration.addUrlPatterns("/*");
filter.setFlushMode(FlushMode.AUTO);
filter.setSingleSession(true);
filter.setSessionFactoryBeanName("sessionFactory");
filterRegistration.setAsyncSupported(true);
filterRegistration.setOrder(1);
return filterRegistration;
}
再次測試問題依舊,只是部分表的操作save失敗,然後在失敗的地方,調用dao.getHibernateTemplate().flush()手動刷新即可
原因就是hibernatesession沒有關閉導致,所以手動刷新後問題解決