0
我使用的Grails 1.2.1,我總是得到這個消息時,我跑我的應用程序,讓它不使用應用程序的人。
org.hibernate.LazyInitializationException:無法初始化代理 - 沒有會話
at H__project_ilinkdev_grails_app_views_layouts_main_gsp$_run_closure2.doCall(H__project_ilinkdev_grails_app_views_layouts_main_gsp:220)
at H__project_ilinkdev_grails_app_views_layouts_main_gsp$_run_closure2.doCall(H__project_ilinkdev_grails_app_views_layouts_main_gsp)
at H__project_ilinkdev_grails_app_views_layouts_main_gsp.run(H__project_ilinkdev_grails_app_views_layouts_main_gsp:259)
at org.jsecurity.web.servlet.JSecurityFilter.doFilterInternal(JSecurityFilter.java:382)
at org.jsecurity.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:180)
at java.lang.Thread.run(Thread.java:619)
在我看來,我有加載類菜單:
/**
器菜單域 規則:一個菜單的一個控制器 * */ class Menu { String menuName =「」; String menuController =「」; String menuAction =「」; Integer menuOrder = 1; String menuClass =''; // html class Integer myid = 0;
boolean isUser = false; // is this user menu (user only menu)
boolean isAdmin = false; // is this administrator menu
boolean isHorizontal =false; // is this horizontal or vertical (if false)
String menuType='all'; // pia, dam, da, br, all
Menu parentMenu;
static hasMany = [childMenu:Menu] ;
static belongsTo = [parentMenu:Menu];
static constraints = {
menuName(blank:false, nullable:false);
menuOrder(blank:false, nullable:false);
menuController(blank:true,nullable:false); // blank/nullable if there is no controller
menuAction(blank:true,nullable:false); // blank/nullable if there is no controller
menuClass(blank:true,nullable:false); // css class ... blank : using default menu
parentMenu(blank:true, nullable:true);
childMenu(blank:true, nullable:true);
}
String toString(){
"${menuName}";
}
}
和佈局/ main.gsp 裏面我有這樣的代碼:
<%
def currMenu = Menu.findByMenuController(params.controller);
%>
<g:if test="${currMenu}">
<g:if test="${currMenu.isHorizontal}">
<g:each in="${Menu.findAllByParentMenu(currMenu,[sort:'menuOrder',order:'asc'])}" status='x' var='submenu'>
<li class='${submenu.menuClass} <%
if(submenu.menuController == params.controller){
// dont hi-light on sign out
if(params.controller.equals("auth")){
}else{
out << "selected";
}
}
%>'>
<g:if test="${!submenu.menuController.equals('')}">
<g:link controller='${submenu?.menuController}' action='${submenu?.menuAction}'>
${submenu?.menuName}
</g:link>
</g:if>
<g:else>
${submenu?.menuName}
</g:else>
</li>
</g:each>
</g:if>
<g:else>
<%
// get who is the parent
def parentMenu = currMenu.parentMenu ;
%>
<g:each in="${Menu.findAllByParentMenu(parentMenu,[sort:'menuOrder',order:'asc'])}" status='x' var='submenu'>
<li class='${submenu.menuClass} <%
if(submenu.menuController == params.controller){
// dont hi-light on sign out
if(params.controller.equals("auth")){
}else{
out << "selected";
}
}
%>'>
<g:if test="${!submenu.menuController.equals('')}">
<g:link controller='${submenu?.menuController}' action='${submenu?.menuAction}'>
${submenu?.menuName}
</g:link>
</g:if>
<g:else>
${submenu?.menuName}
</g:else>
</li>
</g:each>
</g:else>
</g:if>
</ul>
</g:if>
如何修復這個bug?我可以重新啓動grails,它可以像平常一樣工作..但我只是好奇如何解決這個問題
你嘗試過搜索stackoverflow嗎?或者您是否看到提供的建議? http://stackoverflow.com/questions/345705/hibernate-lazyinitializationexception-could-not-initialize-proxy,http://stackoverflow.com/questions/1206460/hibernate-spring3-could-not-initialize-proxy-no-會議 – Bozho 2010-05-12 09:43:51