次のような動的な 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;
}
ビーンコード:
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」に返されたコレクションが含まれていることがわかりましたが、それをデータテーブルに割り当てるにはどうすればよいですか? 返されたコレクションには、'tradeStock' と 'orderStock' の 2 つのテーブルのオブジェクトが含まれています。
編集: 2 つの異なるクラスのフィールドを表示したい - OrderStock のいくつかのフィールドと TradeStock のいくつかのフィールドは、「OrderID」と呼ばれる共通のフィールドで結合されています..これは可能ですか?? そうでない場合、代替ソリューションは何ですか??