У меня небольшая проблема с данными вида в элементе h:dataTable
.У меня есть собственный запрос, который работает правильно в базе данных и в Java:
SELECT SUM(price_list.first_class_price), SUM(price_list.second_class_price)
FROM price_list, connections
WHERE connections.id = price_list.id_connect
GROUP BY connections.source;
Метод в EJB возвращает список элементов.Этот метод выглядит следующим образом:
public List<PriceList> getFirstClassPrices() {
Query q = em.createNativeQuery("SELECT SUM(price_list.first_class_price), SUM(price_list.second_class_price) FROM price_list, connections WHERE connections.id = price_list.id_connect GROUP BY connections.source");
return q.getResultList();
}
Я хочу показать результат этого запроса в dataTableItem, но я не знаю, как добраться до этих значений.Я пытался сделать что-то вроде этого (FCP - это метод в JSF ManagedBean, который возвращает упомянутый список):
<h:dataTable value="#{priceList.FCP}}" var="item" cellspacing="0" cellpadding="1" border="1">
<h:column>
<f:facet name="header">
<h: outputText value="First class"/>
</f:facet>
<h: outputText value="#{item}"/>
</h:column>
<h:column>
<f:facet name="header">
<h: outputText value="Second class"/>
</f:facet>
<h: outputText value="#{item}"/>
</h:column>
</h:dataTable>
, но это показывает мне только ссылки в качестве результата в таблице.
Метод FCP в JSF ManagedBean выглядит следующим образом:
public List<PriceList> getFCP() {
return priceListFacade.getFirstClassPrices();
}
Это решение работает правильно, когда у меня есть такой запрос:
SELECT SUM(price_list.first_class_price)
FROM price_list, connections
WHERE connections.id = price_list.id_connect
GROUP BY connections.source;
с одним элементом SUM,Тогда правильные данные находятся в таблице и нет проблем.
Мой вопрос: как получить данные, без ссылок в списке результатов, когда в запросе есть два или более элементов SUM?
Я пытался использовать код, подобный этому:
<h:dataTable value="#{priceList.FCP}}" var="item" cellspacing="0" cellpadding="1" border="1">
<h:column>
<f:facet name="header">
<h: outputText value="First class"/>
</f:facet>
<h: outputText value="#{item.first_class_price}"/>
</h:column>
<h:column>
<f:facet name="header">
<h: outputText value="Second class"/>
</f:facet>
<h: outputText value="#{item.second_class_price}"/>
</h:column>
</h:dataTable>
, но затем у меня есть исключение EJB: нет таких свойств, как first_class_price
и second_class_price
.
Я пытался изменить запрос для этого:
SELECT SUM(price_list.first_class_price) AS p1, SUM(price_list.second_class_price) AS p2
FROM price_list, connections
WHERE connections.id = price_list.id_connect
GROUP BY connections.source;
, а затем в JSF я использовал такой код:
<h:dataTable value="#{priceList.FCP}}" var="item" cellspacing="0" cellpadding="1" border="1">
<h:column>
<f:facet name="header">
<h: outputText value="First class"/>
</f:facet>
<h: outputText value="#{item.p1}"/>
</h:column>
<h:column>
<f:facet name="header">
<h: outputText value="Second class"/>
</f:facet>
<h: outputText value="#{item.p2}"/>
</h:column>
</h:dataTable>
, но у меня тот же EJBисключение, что свойства p1 и p2 не существует.
Я новичок в Java EE и не могу с этим справиться.Может быть, есть другой способ решить мою проблему?Может мне не стоит использовать h:dataTableItem
?
Спасибо за ваши ответы.