【问题标题】:How to retrive data from Table hibernate in my case?在我的情况下,如何从 Table hibernate 中检索数据?
【发布时间】:2018-05-21 18:17:30
【问题描述】:

我正在使用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)

怎么办?谢谢你

【问题讨论】:

  • 你试过 ${zebra.niveau2.annee.num} 吗?
  • 不行,应该是get方法。

标签: spring hibernate spring-mvc hibernate-mapping


【解决方案1】:

您需要直接使用属性名称而不是 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 的有效对象/列表,这应该可以工作。我的实体类的属性都是私有的,这仍然有效,我相信反射用于访问字段。这就是我的控制器在此页面上的工作方式:

@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";
}

【讨论】:

  • 你能把表格的注释贴出来
【解决方案2】:

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

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

${zebra.niveau2.annee.num}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    相关资源
    最近更新 更多