Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Hibernate的Spring数据注入_Spring_Dependency Injection - Fatal编程技术网

使用Hibernate的Spring数据注入

使用Hibernate的Spring数据注入,spring,dependency-injection,Spring,Dependency Injection,在初始化web应用程序时,我试图将一些静态数据从DB注入bean <bean id="CustomDriven" class="java.util.ArrayList"> <constructor-arg> <value>#{FormCodeHibernateDAO.findAll()}</value> </constructor-arg> </bean> 我

在初始化web应用程序时,我试图将一些静态数据从DB注入bean

<bean id="CustomDriven" class="java.util.ArrayList">
        <constructor-arg>
            <value>#{FormCodeHibernateDAO.findAll()}</value>
        </constructor-arg>
    </bean>
我犯了一个错误

6:48:07977信息[main][UpdateTimestampsCache]正在区域org.hibernate.cache.UpdateTimestampsCache启动更新时间戳缓存 16:48:07981信息[main][StandardQueryCache]正在区域中启动查询缓存:org.hibernate.cache.StandardQueryCache 16:48:09016调试[main][GenericDaoJpa]findAll 16:48:09017调试[main][GenericDaoJpa]正在获取HIBERNATE会话。。。 16:48:09196错误[main][GenericDaoJpa]查找所有 org.hibernate.SessionException:会话已关闭! 位于org.hibernate.impl.AbstractSessionImpl.ErrorIfClosedBStractSessionImpl.java:72 位于org.hibernate.impl.SessionImpl.setFlushModeSessionImpl.java:1433


有什么原因让我这样做吗?

也许执行{formcodehbernatedao.findAll}比应用程序上下文开始连接数据库还要早,我想是的。

我发现了问题,我的自定义驱动bean直接与DAO Impl对话

我将其更改为使用服务与DAO对话,新配置如下所示

<bean id="CustomDriven" class="java.util.ArrayList">
        <constructor-arg>
            <value>#{dataDrivenService.getDataList()}</value>
        </constructor-arg>
    </bean>
DataDriverService类是

public interface DataDrivenService<T> {

    public List<T> getDataList();
 }
而ServiceImpl是

@Service( value = "dataDrivenService" )
public class DataDrivenServiceImpl implements DataDrivenService {

    @Autowired
    @Qualifier( value = "formCodeDAO" )
    private FormCodeDAO dao;

    @Override
    @Transactional( readOnly = true )
    public List<FormCode> getDataList() {
        return dao.findAll();
    }
}

如果接口中的FormCodeDAO扩展了GenericDAO实现

,而不知道FormCodeHibernateDAO是什么,或者它做什么,或者它是如何做的,那么我们怎么知道呢?FormCodeHibernateDAO只是扩展了一个DAO的通用实现,它有findByName、findByCode、findAllDon不认为是这样的,我有创建drop的持久性,在日志中可以看到创建的表和填充的数据。