Java独立(控制台)应用程序-org.hibernate.LazyInitializationException:无法初始化代理-无会话
我搜索了所有StackOverflow站点和Google,99.9%的问题都是关于web应用程序的,但我没有找到Java独立应用程序(在Linux终端“Java-jar myApp.jar”中运行)的经典异常“org.hibernate.lazyiInitializationException:无法初始化代理-无会话”的任何解决方案 我的项目使用Spring4.0.7+Hibernate4.3.6.Final+Log4J1.2.17+BoneCP0.8.0 我尝试了以下解决方案:Java独立(控制台)应用程序-org.hibernate.LazyInitializationException:无法初始化代理-无会话,java,spring,hibernate,console-application,Java,Spring,Hibernate,Console Application,我搜索了所有StackOverflow站点和Google,99.9%的问题都是关于web应用程序的,但我没有找到Java独立应用程序(在Linux终端“Java-jar myApp.jar”中运行)的经典异常“org.hibernate.lazyiInitializationException:无法初始化代理-无会话”的任何解决方案 我的项目使用Spring4.0.7+Hibernate4.3.6.Final+Log4J1.2.17+BoneCP0.8.0 我尝试了以下解决方案: @客户端类和客
package com.mycompany.domain.registry;
@Component
@Transactional
public class Registry {
private static ApplicationContext applicationContext;
@Autowired(required = true)
public Registry(ApplicationContext appContext) {
applicationContext = appContext;
}
public static UserDao getUserDao() {
return applicationContext.getBean(UserDao.class);
}
}
编辑:
添加堆栈跟踪以更好地理解
注:
- ABDomain是应用程序外观(如上所述)
- Inbox是客户端类调用的另一个类
package com.mycompany.domain.facade;
@Service
@Transactional(propagation = Propagation.REQUIRED)
public class ABDomain {
public static ABDomain instance() {
// SpringUtil implements ApplicationContextAware
return SpringUtil.getApplicationContext().getBean(ABDomain.class);
}
public User getUserById(Long id) {
/*
UsuarioDao is an interface, and its
implementation UsuarioDaoImpl extends AbstractHibernateDao
*/
return Registry.getUserDao().findById(id);
}
}
package com.mycompany.domain.registry;
@Component
@Transactional
public class Registry {
private static ApplicationContext applicationContext;
@Autowired(required = true)
public Registry(ApplicationContext appContext) {
applicationContext = appContext;
}
public static UserDao getUserDao() {
return applicationContext.getBean(UserDao.class);
}
}
org.springframework.orm.hibernate4.HibernateSystemException: could not initialize proxy - no Session; nested exception is org.hibernate.LazyInitializationException: could
not initialize proxy - no Session
at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:216)
at org.springframework.orm.hibernate4.HibernateExceptionTranslator.convertHibernateAccessException(HibernateExceptionTranslator.java:57)
at org.springframework.orm.hibernate4.HibernateExceptionTranslator.translateExceptionIfPossible(HibernateExceptionTranslator.java:44)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy120.findLastPosition(Unknown Source)
at com.mycompany.domain.facade.ABDomain.findLastPosition(ABDomain.java:832)
at com.mycompany.domain.facade.ABDomain$$FastClassBySpringCGLIB$$f56e1d49.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644)
at com.mycompany.domain.facade.ABDomain$$EnhancerBySpringCGLIB$$4c071cee.findLastPosition()
at com.mycompany.cpr.client.Inbox.updateLastPosition(Inbox.java:714)
at com.mycompany.cpr.client.Inbox.processMessage(Inbox.java:604)
at com.mycompany.cpr.client.Inbox$3.run(Inbox.java:934)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:165)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:286)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
at com.mycompany.domain.entity.Vehicle_$$_jvst374_1e.getId(Vehicle_$$_jvst374_1e.java)
at com.mycompany.domain.dao.impl.LastPositionDaoImpl.findLastPosition(LastPositionDaoImpl.java:34)
at sun.reflect.GeneratedMethodAccessor1487.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at com.mycompany.cpr.client.Inbox.processMessage(Inbox.java:604)