zoukankan      html  css  js  c++  java
  • springhibernate错误总结1

    1、hibernate版本在类中的包的导入。:org.springframework.beans.factory.BeanCreationException
    问题 【本来配置在数据层、事务管理的是版本4,但是在service层引入package时在导入了自动默认为3的版本】出现bean加载异常。

    2、事务管理器连接的数据池。:
    【单独的spring里直接连接数据源就行,但是整合hibernate后,需要通过hibernate创建会话然后去链接数据源】


    3、查询方法:由于经过spring整合后的hibernate无法直接获取session,只能通过sessionfactory工厂来开启session。
    一种方法是通过回掉的返回值来获取session:
    super.getHibernateTemplate().executeFind(new HibernateCallback() {
    @Override
    public Object doInHibernate(Session session){
    Query query = session.createQuery();
    List data = query.list();
    }
    });
    或者: return this.getHibernateTemplate().execute(new HibernateCallback<List<Students>>() {
    public List<Students> doInHibernate(Session session) throws HibernateException{
    String sql = "select * from Students";
    return session.createSQLQuery(sql).addEntity(Students.class).list();

    }
    });

    另一种方法是回到hibernate,添加一个新的模板jdbc:
    <!-- 配置jdbc 模板 -->
    <bean id="jts" class="org.springframework.jdbc.core.JdbcTemplate" >
    <!-- 将数据源配置给jdbc模板 -->
    <property name="dataSource" ref="dataSource"/>
    </bean>

    4、关于通过注入的方法创建sessionfactory工厂,间接回到 hibernate的原始方法,创建一个session:
    //通过注解的方法注入
    @Autowired
    private SessionFactory sessionFactory;

    调用: String hql = "from Students where classid='"+id+"'";//
    Session se = sessionFactory.getCurrentSession();//创建一个session;
    Query sq = se.createQuery(hql);//翻译hql语句并且执行
    List<Students> li = sq.list();//转换
    se.close(); //关闭刚刚创建的session

  • 相关阅读:
    表单重复提交问题
    Win8.1卸载64位Oracle Database 11g的详细图文步骤记录
    A1084. Broken Keyboard (20)
    A1088. Rational Arithmetic (20)
    A1089. Insert or Merge (25)
    A1034. Head of a Gang (30)
    A1013. Battle Over Cities (25)
    A1030. Travel Plan (30)
    A1003. Emergency (25)
    A1076. Forwards on Weibo (30)
  • 原文地址:https://www.cnblogs.com/puzhichao/p/8392039.html
Copyright © 2011-2022 走看看