项目用到:spring3.2 springMVC  hibernate4.2 如果不设置hibernate 映射的关联对象为lazy 为 false,那么就无法获取到关联对象信息,即使在basedao下。如果知道如何解决请指点下项目配置都很常规。 莫名其妙出现这个问题。 知道问题的求解决。HibernateSpringspringmvc懒加载

解决方案 »

  1.   

    顶啊 顶 啊 顶顶     在开源中国发了帖子  结果·····   来CSDN试验下。   求解决哦··  真的很头大 也不报错。
      

  2.   

    laze=false的意思是取消懒加载机制,也就是在加载对象的同时,就发出第二条查询语句查询他关联集合的数据。出现你的问题原因是你的Session已经关闭了,在你的web.xml里配置
    <filter> 
        <filter-name>openSessionInViewFilter</filter-name> 
        <filter-class> 
         org.springframework.orm.hibernate4.support.OpenSessionInViewFilter 
        </filter-class> 
    </filter 
    <filter-mapping> 
        <filter-name>openSessionInViewFilter</filter-name> 
        <url-pattern>*.do</url-pattern> 
    </filter-mapping>
      

  3.   


    应该不是session关闭问题。因为:
    1、如图没有报异常。
    2、我有配置:
    <filter>
    <filter-name>hibernateOpenSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
    <init-param>
    <param-name>flushMode</param-name>
    <param-value>AUTO</param-value>
    </init-param>
    </filter>

    <filter-mapping>
    <filter-name>hibernateOpenSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  4.   


    如图。 如果是session没有开启,那么这个时候肯定断点不到图那个位置。
    如图。确实发送了2个语句,第一个是主要查询,第二个是关联查询。 但如图,查询结果尽然为空。
      

  5.   

    你的dao是怎么实现的。通过session?
      

  6.   

    public class BaseDAO<T,PK extends Serializable> {
    @Resource
        private SessionFactory sessionFactory;

    private Class<T> entityClass; /**
     * 获取session
     * @return
     */
        private Session getSession() {
            return sessionFactory.getCurrentSession();
        }
        
      

  7.   


    /**
     * 根据hql查询  注意拼接带来的SQL注入式攻击
     * @param hql hql语句
     * @return list 数据Bean对象集合
     */
    public List<?> search(String hql) {
    return (List<?>)getSession().createQuery(hql).list();
    }