<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">有三种解决方法:</span>
1. 使用@Transactional开启事务
spring配置文件:
<tx:annotation-driven transaction-manager="transactionManager"/>
@Service
public class CustomerServiceImpl implements CustomerService {
@Transactional
public void saveCustomer(Customer customer) {
customerDaoImpl.saveCustomer(customer);
}
...
}
Hibernate配置文件
<property name="current_session_context_class">thread</property>
2.使用SpringOpenSessionInViewFilter
在web.xml中增加了filter就可以了。 <filter> <filter-name>SpringOpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>SpringOpenSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3.配置aop,检查表达式是否正确,错误的话也会导致异常。我就是建新项目时,从其他项目拷贝过来改的,由于包路径不同导致报错了。
<aop:config>
<aop:pointcut expression="execution(* com.webapp.service.*.*(..))"
id="findPointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="findPointcut" />
</aop:config>