0

我目前正在尝试构建一个页面,该页面将具有一个数据表,该数据表允许根据为每列设置的条件进行过滤。根据文档,openfaces hibernateCriterionBuilder 是使用 hibernate 完成此任务的最简单方法。构建器可以很好地进行排序,但是一旦通过了过滤条件,它就会引发错误:

严重:javax.el.E​​LException:/tools/orders/orderPicker.xhtml @24,168 value="#{orderPicker.orders}":org.hibernate.QueryException:无法解析属性:/tools/orders/orderPicker of:pojo。订单

据我所知,这是部分 hibernateCriterionBuilder 未能正确解析过滤数据,这让我怀疑我做错了什么。对构建器的调用是这样的:

    Session session = resources.HibernateUtil.getSessionFactory().openSession();
    Criteria criteria = HibernateCriterionBuilder.buildCriteria(session, pojo.Orders.class);
    orders = criteria.list();

从下表:

            <o:dataTable value="#{orderPicker.orders}" var="item" customDataProviding="true" totalRowCount="#{orderPicker.rowCount}" pageSize="10">
                <o:column sortingExpression="#{item.distId}" id="distId"  >
                    <f:facet name="header">
                        distId
                    </f:facet>
                    <f:facet name="subHeader">
                        <o:dropDownFieldFilter condition="beginsWith" />
                    </f:facet>
                    <h:outputText value="#{item.distId}" />
                </o:column>
            </o:dataTable>

任何帮助或见解将不胜感激。

4

1 回答 1

0

我为回答我自己的问题而道歉,但我发现我做错了什么。将 customDataProver 与过滤器一起使用时,您需要将过滤器的表达式属性定义为等于您尝试映射到的休眠属性。

改变

<o:dropDownFieldFilter condition="beginsWith" />

<o:dropDownFieldFilter condition="beginsWith" expression="distId" />

使一切正常。

于 2011-01-17T17:12:07.233 回答