java - 动态jpql返回集合但如何将其分配给数据表?

标签 java jsf jakarta-ee jpa primefaces

我有一个动态jpql,如下:

public Collection getOrderReportByUserName(String userName, Integer scripID, String orderStatus, String orderType) 
{     

    String strQuery = null;

        Collection<TradeStock> ts = em.createQuery("Select t from TradeStock t where t.userName.userName = :userName").setParameter("userName",userName).getResultList();
        if(ts.isEmpty())
        {
            strQuery = "Select o from OrderStock o where o.userName.userName = :userName ";
        }
        else
        {
            strQuery = "Select o,t from OrderStock o,TradeStock t where o.userName.userName = :userName and t.userName.userName = :userName";
        }   

    Collection c = em.createQuery(strQuery).setParameter("userName",userName).getResultList();
    return c;  
}

bean 代码:

public collection getOrderReport()
    {

        collOrder=  getOrderReportByUserName(uname,scripID,orderStatus,orderType);

    }

xhtml:

<p:dataTable id="dt" var="order" widgetVar="scripTab" 
                     emptyMessage="No scrip found with given criteria" binding="#{stockOrderBean.dt}" 
                     value="#{stockOrderBean. collOrder}"
                 >

        <p:column>

            <f:facet name="header">
                Scrip Symbol
            </f:facet>
            <h:outputText value="#{order.get(0)}"/> ?? how to assign it?
        </p:column>......

在这里,当我调试它时,我发现“c”包含返回的集合,但现在如何将它分配给数据表?返回的集合包含 2 个表的对象 - 'tradeStock' 和 'orderStock' - 那么我如何在 primefaces 数据表中使用它?

编辑: 我想显示来自两个不同类的字段 - 来自 OrderStock 的一些字段和来自 TradeStock 的一些字段,它们由名为“OrderID”的公共(public)字段连接。这可能吗?如果没有那么替代解决方案是什么?

最佳答案

注意:我建议阅读一些有关 Java 开发的基础知识。您的代码中存在一些重大缺陷。

但至于你的具体问题:

如果您在名为 StockOrderBean 的 bean 中有一个 getOrderReport() 方法,您必须在 View 中引用它:

#{stockOrderBean.orderReport}

所以你的表定义应该是这样的:

<p:dataTable value="#{stockOrderBean.orderReport}" var="order"..>

您需要确保您的列表包含相同类/父类(super class)的对象,而不是完全不同的对象才能使其正常工作。然后,如果您的类 Order 具有带有 getter 和 setter 的日期属性,您可以在表列中引用它:

 <h:outputText value="#{order.date}"/>

关于java - 动态jpql返回集合但如何将其分配给数据表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10813271/

相关文章:

java - 小数点后有 2 个分数的 BigDecimal?

java - 网络应用程序 : Delete files during runtime

java - 使用复合主键和注释 : 映射多对多

java - 获取 WSDL 时如何强制执行基本身份验证(服务器端)

java - libgdx 同时更新标签文本和位置

java - 功能点估计

java - 如何在列名称中使用下划线进行 JPQL 查询?

java - 试图找到 Ant 的 javac -source 1.4 参数的来源

java - JSF selectManyListbox 显示值绑定(bind)错误

java - 如何将并行进程同步到 Web 服务中?