Spring数据lazyload不LazyInitializationException

Spring数据lazyload不LazyInitializationException,spring,spring-data,lazy-loading,transactional,Spring,Spring Data,Lazy Loading,Transactional,执行正确。但是 classARepo.findOne(1); 背景: @PersistJobDataAfterExecution @DisallowConcurrentExecution @Transactional @Component public class TestClassJOB extends AbstractJob { @Autowired TestClass indexer; } 我尝试了很多资源,但无法解决这个问题。显示以下错误消息“无法初始化代理-无会

执行正确。但是

classARepo.findOne(1);
背景:

@PersistJobDataAfterExecution
@DisallowConcurrentExecution
@Transactional
@Component
public class TestClassJOB extends AbstractJob
{
    @Autowired
    TestClass indexer;
}

我尝试了很多资源,但无法解决这个问题。显示以下错误消息“无法初始化代理-无会话”

问题的原因可能是什么?
当调用classARepo.findOne(1)时会话可用时,为什么在延迟获取(list.size())期间不可用?

问题在于TestClassJOB的实例是由Quartz创建的。因此,跨国代理未应用于类,这就是问题的原因

我通过声明一个事务模板修复了这个问题

<!-- JPA mapping configuration -->
<bean id="persistenceXmlLocation" class="java.lang.String">
    <constructor-arg value="classpath:/persistence.xml"></constructor-arg>
</bean>

<!-- entity manager -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    p:dataSource-ref="dataSource" p:persistenceUnitName="jpaData"
    p:persistenceXmlLocation-ref="persistenceXmlLocation">
    <property name="packagesToScan" value="com..persist.entity" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
</bean>

<!-- transaction manager -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" 
    p:entityManagerFactory-ref="entityManagerFactory" lazy-init="true" p:dataSource-ref="dataSource" />

<!-- JPA repositories -->
<jpa:repositories base-package="com..persist.repo" 
    entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager" />
然后将代码包装到

@Autowired
TransactionTemplate transactionTemplate;
transactionTemplate.execute(新建TransactionCallbackWithoutResult())
{
@凌驾
受保护的void doInTransactionWithoutResult(事务状态)
{

}
}

显示ClassARepo的代码。显示如何获取TestClass的实例。显示如何配置上下文。@JBNizet我已经添加了请求的详细信息。您是否介意向我们显示方法代码
findOne
?可能您在返回对象后关闭会话。@JBNizet TestClassJOB的实例是由Quartz创建的…看起来这个问题。。。
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
@Transactional
@Component
public class TestClassJOB extends AbstractJob
{
    @Autowired
    TestClass indexer;
}
<!-- JPA mapping configuration -->
<bean id="persistenceXmlLocation" class="java.lang.String">
    <constructor-arg value="classpath:/persistence.xml"></constructor-arg>
</bean>

<!-- entity manager -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    p:dataSource-ref="dataSource" p:persistenceUnitName="jpaData"
    p:persistenceXmlLocation-ref="persistenceXmlLocation">
    <property name="packagesToScan" value="com..persist.entity" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
</bean>

<!-- transaction manager -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" 
    p:entityManagerFactory-ref="entityManagerFactory" lazy-init="true" p:dataSource-ref="dataSource" />

<!-- JPA repositories -->
<jpa:repositories base-package="com..persist.repo" 
    entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager" />
@Autowired
TransactionTemplate transactionTemplate;
    transactionTemplate.execute(new TransactionCallbackWithoutResult()
    {
        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status)
        {
           <code here>
        }
   }