论坛首页 Java企业应用论坛

Struts+Hibernate+Spring

浏览 6757 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-12-01  
Struts+Hibernate+Spring出现异常错误谢谢!

依赖注入配置省了
出现的异常为:Failed to lazily initialize a collection - no session or session was closed
谢谢!

QueryManager.java类
public interface QueryManager {
public List find( String query );
}

HibernateQueryManager.java类:
public class HibernateQueryManager extends HibernateDaoSupport implements QueryManager
{
public List find( String query ) {
return getHibernateTemplate().find( query );

}
}

ContactService.java
public interface ContactService
{
public List findContactsByUser( String userName ) ;
}

ContactService.java的实现类ContactServiceImpl.java
public class ContactServiceImpl extends BaseService implements ContactService
{
public List findContactsByUser( String userName )
{
User user = _userService.findUserByName( userName );
String sql = "from Contact as contact where contact.fromUser.id = '" + user.getId().toString() + "' order by contact.id desc";

return qm.find( sql );
}
}

UserService.java
public interface UserService
{
public User findUserByName( String name ) ;
}

UserService.java的实现类UserServiceImpl.java
public class UsersServiceImpl extends BaseService implements UserService
{
public User findUserByName( String name )
{
List list = qm.find( "from User where username= ? ", name );
if( list.size() > 0 ) return (User)list.get(0);
return null;
}
}

action类接受页面传递过来的数据
AlbumAction.java

public class AlbumAction extends BaseAction
{
public ActionForward addAdmin(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
throws Exception {

String username = (String) request.getParameter("user");
User user = _userService.findUserByName( username );
request.setAttribute( "user", user );
request.setAttribute( "isOwner", isOwner( username ) );
List listFriends = _contactService.findContactsByUser(username); //跟踪调试发现listFriends.size()>=1(即是有数据的,数据可以查询出来)
System.out.println("ok");
request.setAttribute("listFriends",listFriends); //在这里出现错误:  Failed to lazily initialize a collection - no session or session was closed
System.out.println("test");
return mapping.findForward("addAdmin");

}
  }


    以上类之间的关系:

页面------>AlbumAction------>ContactServiceImpl---------->UserServiceImpl
                                               ---------->HibernateQueryManager


出现的异常为:
javax.servlet.ServletException: Failed to lazily initialize a collection - no session or session was closed
net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter.doFilter(SecurityEnforcementFilter.java:214)
net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
net.sf.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:212)
net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
net.sf.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:153)
net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
net.sf.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:114)
net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
net.sf.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:374)
net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
net.sf.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:225)
net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
net.sf.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:179)
net.sf.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:125)
dragonchant.framework.web.EncodingFilter.doFilter(EncodingFilter.java:37)
   发表时间:2005-12-02  
所以没有数据,建议在service层把数据调出来,做一个dto形式的类,然后传到页面
0 请登录后投票
   发表时间:2005-12-02  
我是在service层提取数据的哦!请继续指点,可以再把session给打开或其它方式吗?
0 请登录后投票
   发表时间:2005-12-02  
google "open session inview"
it's better for web application
0 请登录后投票
   发表时间:2005-12-02  
<filter>
        <filter-name>hibernateFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate.support.OpenSessionInViewFilter</filter-class>
    <init-param>
    <param-name>singleSession</param-name>
    <param-value>false</param-value>
    </init-param>
    </filter>
    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>*.html</url-pattern>
    </filter-mapping>
0 请登录后投票
   发表时间:2005-12-14  
“<url-pattern>*.html</url-pattern> ”

你的页面都是以html为后缀的吗? 如果不是的话,那就是这个错误了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics