当前位置:编程学习 > JAVA >>

hibernate 4.2 无法启用懒加载

项目用到:spring3.2 springMVC  hibernate4.2 

如果不设置hibernate 映射的关联对象为lazy 为 false,那么就无法获取到关联对象信息,即使在basedao下。

如果知道如何解决请指点下



项目配置都很常规。 莫名其妙出现这个问题。 知道问题的求解决。 Hibernate Spring springmvc 懒加载 --------------------编程问答-------------------- 顶啊 顶 啊 顶顶     在开源中国发了帖子  结果·····   来CSDN试验下。   求解决哦··  真的很头大 也不报错。 --------------------编程问答-------------------- 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> --------------------编程问答--------------------
引用 2 楼 fangmingshijie 的回复:
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>




应该不是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 楼 fangmingshijie 的回复:
你报什么错误。



没有报错  就是查询不到东西 --------------------编程问答--------------------
引用 4 楼 fangmingshijie 的回复:
你报什么错误。


如图。 如果是session没有开启,那么这个时候肯定断点不到图那个位置。
如图。确实发送了2个语句,第一个是主要查询,第二个是关联查询。 但如图,查询结果尽然为空。 --------------------编程问答-------------------- 你的dao是怎么实现的。通过session? --------------------编程问答--------------------
引用 7 楼 fangmingshijie 的回复:
你的dao是怎么实现的。通过session?



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

private Class<T> entityClass;

/**
 * 获取session
 * @return
 */
    private Session getSession() {
        return sessionFactory.getCurrentSession();
    }
     --------------------编程问答--------------------
引用 8 楼 zhenjinsuo 的回复:
Quote: 引用 7 楼 fangmingshijie 的回复:

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


/**
 * 根据hql查询  注意拼接带来的SQL注入式攻击
 * @param hql hql语句
 * @return list 数据Bean对象集合
 */
public List<?> search(String hql) {
return (List<?>)getSession().createQuery(hql).list();
}
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,