51,409
社区成员
发帖
与我相关
我的任务
分享ERROR: Session is closed; nested exception is org.hibernate.SessionException: Session is closed
org.springframework.orm.hibernate3.HibernateSystemException: Session is closed; nested exception is org.hibernate.SessionException: Session is closed
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)
at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:793)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:683)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822)
at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:411)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:114)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
at com.eshore.mall.service.sysmgr.datadictionary.DataDictionaryService$$EnhancerByCGLIB$$5b37271f.getDataDictionary(<generated>)
at com.eshore.mall.web.help.action.HelpAction.doCache(HelpAction.java:211)
at com.eshore.mall.web.help.action.HelpAction$$FastClassByCGLIB$$9ebb387d.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:50)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)......Caused by: org.hibernate.SessionException: Session is closed
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:157)
at org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:213)
at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:192)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:676)
... 90 more
@Service("dataDictionaryService")
public class DataDictionaryService {
@Autowired
private CommonDao commonDao;
@SuppressWarnings("unchecked")
@Cacheable(cacheName = "system")
public List<DataDictionary> getDataDictionary(String type, String provinceCode) {
Session session = commonDao.currentSession();
StringBuffer hql = new StringBuffer("from " + DataDictionary.class.getName()
+ " as d where 1=1 ");
if (StringHelper.isNotNull(type)) {
hql.append(" and d.type=:type ");
}
if (StringHelper.isNotNull(provinceCode)) {
hql.append(" and d.provinceCode=:proCode ");
}
hql.append("order by d.orderList asc");
Query query = session.createQuery(hql.toString());
if (StringHelper.isNotNull(type)) {
query.setString("type", type);
}
if (StringHelper.isNotNull(provinceCode)) {
query.setString("proCode", provinceCode);
}
// 启用查询查询缓存
query.setCacheable(true);
return query.list();
}
}
@Aspect
@Component("logAspectBean")
public class LogAspectBean {
public void servicePointCut(){}
/** dao层总的切入点 */
@Pointcut("execution(* com.eshore.mall.database.dao..*(..))")
public void databasePointCut(){}
/** 方法执行完之后做日记 */
@AfterReturning(value = "databasePointCut()",
argNames = "outputParmars", returning = "outputParmars")
public void logInfo(JoinPoint joinPoint, Object outputParmars) {
System.out.println("===========后置日记===========");
String account = this.getUserAccount();
String className = joinPoint.getTarget().getClass().getName();
String function = joinPoint.getSignature().getName();
Object[] inputParmars = joinPoint.getArgs();
System.out.println("类:" + className + ";方法:" + function+";用户:"+account);
LogUtil log = new LogUtil();
log.doLog(className, function, inputParmars, outputParmars, LogLevel.INFO.getCode(),
account);
}
/** 用户信息 */
private String getUserAccount() {
HttpServletRequest request = SysContent.getRequest();
HttpSession session = SysContent.getSession();
if (session != null) {
SessionUserInfo sessionUserInfo = SessionUtil.getSessionUserInfo(request);
if (sessionUserInfo != null) {
return sessionUserInfo.getAccount();
}
else
return "";
}
else
return "";
}
}