在我的情况下如何从表hibernate中检索数据?

时间:2018-05-21 18:17:30

标签: spring hibernate spring-mvc hibernate-mapping

我正在使用Spring MVC建立一个网站。 我有这些tables

zebra (idzebra,nom,snum,niveau2) 

niveau2(idniveau2,nom,date,annee) 

annee(idannee,num)

我想列出所有data binding

<td class="center">${zebra.getNiveau2().getAnnee().getNum() }</td>
<td class="center">${zebra.getNiveau2().getSemaine().getNum() }</td>

但它不起作用,我收到此错误

javax.el.MethodNotFoundException: Method not found: class org.hibernate.collection.PersistentBag.getAnnee()
    javax.el.Util.findWrapper(Util.java:370)
    javax.el.Util.findMethod(Util.java:216)
    javax.el.BeanELResolver.invoke(BeanELResolver.java:149)
    org.apache.jasper.el.JasperELResolver.invoke(JasperELResolver.java:147)
    org.apache.el.parser.AstValue.getValue(AstValue.java:159)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
    org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:944)
    org.apache.jsp.WEB_002dINF.views.semaine.semaine_jsp._jspx_meth_c_005fforEach_005f0(semaine_jsp.java:708)
    org.apache.jsp.WEB_002dINF.views.semaine.semaine_jsp._jspService(semaine_jsp.java:394)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

怎么办?谢谢你

2 个答案:

答案 0 :(得分:0)

您需要直接使用属性名称而不是getter方法,以下代码完美运行:

<c:forEach items="${facilities}" var="facility">
                <tr>
                    <td>${facility.name}</td>
                    <td>${facility.code}</td>
                    <td>${facility.linkedInterface.name}</td>
                </tr>
            </c:forEach>

*编辑*

我不相信您的实体类与此问题有任何关系。你是如何为模型提供对象的?只要你有一个有效的对象/列表,你就可以提供给你的JSP了。我的实体班&#39;属性都是私有的,这仍然有效,我相信反射用于访问字段。这就是我的控制器对此页面的工作方式:

@RequestMapping(value = {"/list"}, method = RequestMethod.GET)
public String viewFacilities(ModelMap model) 
{
    List<Interface> interfaces = interfaceService.findAll();
    model.addAttribute("interfaces", interfaces);

    List<Facility> facilities = facilityService.findAll();
    model.addAttribute("facilities", facilities);

    setPermissions(model);

    return "facilities";
}

答案 1 :(得分:0)

Getters setter仅在服务器端用于获取和设置值。

如果你想在你的视图页面中获取值(例如jsp),那么你可以直接使用点运算符访问,所以在你的情况下它会像

${zebra.niveau2.annee.num}

注意: 在上面的代码中,我假设像niveau2,annee,num是直接属性字段(String,int等),但不是对象。如果这些是对象,那么你需要使用for循环进行迭代。