заполнить таблицу данных простых лиц из nativeQuery

Я изучаю среду jsf, извините, если для вас это простой случай,

Я пытаюсь заполнить таблицу данных простых лиц из собственного запроса, это то, что я получил на данный момент

       //My native query is defined in my entity
       @NamedNativeQueries({@NamedNativeQuery(name="Tallt089.bandejaCitas",
       query ="select bandeja.ep_id_tallt089 idBandeja ...)})
       ...
       ...

Я называю этот nativeQuery таким образом

        public List**<TablaBandejaCitas>** bandejaCitas(String cia, String agencia, String division) {
        Query query = em.createNamedQuery("Tallt089.bandejaCitas");
        query.setParameter(1,cia);
        query.setParameter(2,agencia);
        query.setParameter(3,division);
        return query.getResultList();
     //this works fine retrieves correctly my query
}

И использовать его на моем manageBean

        public List**<TablaBandejaCitas>** bandejaCitas(String compania,
        String agencia,String division){
         return agendamientoSession.bandejaCitas(compania,agencia,division);  
        }

затем сослался на это на моей странице jsf, как это

     <p:dataTable id="bandeja_citas" 
     value="#{AgendamientoMBean.bandejaCitas(UsuarioMBean.compania,UsuarioMBean.agencia,
     UsuarioMBean.divisionPK.diDivision)}"  
                             var="bandeja" 
                             paginator="true" rows="15"  >
                    <f:facet name="header">
                        Bandeja Citas por confirmar/Llamadas por realizar
                    </f:facet>
                    <p:column headerText="Id Bandeja" >
                        <h:outputText value ="#{bandeja.idBandeja}"/>
                    </p:column>

                    <p:column headerText="Cliente" sortBy="#{bandeja.cliente}" 
                        filterBy="#{bandeja.cliente}">
                       <h:outputText value ="#{bandeja.cliente}"/>
                    </p:column>
                ...
                ...
                ...
                 </p:dataTable>

Я понял, что свойству var нужно что-то вроде сопоставления полей запроса, потому что предупреждения на странице jsf говорят мне, что это свойство unkwon

     <h:outputText value ="#{bandeja.**cliente**}"/>

Я не знаю, как сохранить запрос в этой переменной, чтобы можно было отобразить данные.

прямо сейчас я получил исключение для входной строки, такое как компонент, читающий необработанные данные вместо отформатированного списка с правильной переменной, заполненной полями запроса.

надеюсь, ты меня поймешь

заранее оцените ваши комментарии :D


person arkantos    schedule 12.01.2012    source источник
comment
Ваш метод bandejaCitas просто возвращает список объектов Object по умолчанию? Вам может понадобиться некоторое приведение, чтобы убедиться, что известно, что у вас есть объекты сущностей Bandeja. return (List‹Bandeja›) query.getResultList();   -  person Rich    schedule 13.01.2012
comment
Привет @Rich спасибо за ваш ответ. Да, он просто возвращает список объектов Objects, можете ли вы показать мне пример того, как реализовать это приведение ‹Bandeja›? поэтому я могу правильно назвать это на странице jsf, я обновил свой код, добавив приведение, но все еще не работает   -  person arkantos    schedule 13.01.2012
comment
Конечно, это было то, что я только что заметил по сравнению с кодом, который я видел с использованием getResultList(), который просто возвращает объекты, поэтому по крайней мере один шаг позволяет Java узнать, что объекты на самом деле являются классом, который у вас есть со свойствами для каждой проекции запроса . Если собственный запрос не возвращает проекции, которые представляют собой столбцы таблицы, сопоставленные со свойствами в классе Entity/Bandeja, я думаю, что это проблема. Сделав шаг назад, может быть полезно ответить на ваш вопрос, если вы можете объяснить, почему вы использовали NativeQuery и вообще что вы пытаетесь извлечь из БД (строка или многотабличный запрос?)   -  person Rich    schedule 13.01.2012
comment
Ty @Rich очень ценит вашу помощь. Да, это многотабличный запрос, и запрос не представляет таблицу базы данных: S   -  person arkantos    schedule 13.01.2012
comment
Рад помочь. Итак, мой следующий вопрос: какую структуру постоянства вы используете? javax.persistence.Query — это интерфейс, поэтому знаете ли вы, к какому классу относится ваш объект Query? Тот, который вы получаете от EntityManager em. Мне интересно, есть ли метод, доступный для перебора набора результатов, и вы можете передать столбцы каждого результата в настраиваемый объект, который имеет свойство для каждого столбца. Тогда у таблицы данных Primefaces не будет проблем с доступом к свойствам списка известных типов объектов.   -  person Rich    schedule 13.01.2012
comment
Еще раз привет :), я использую eclipse toplink в качестве поставщика постоянства, я думаю, что настоящая проблема заключается в классе результатов nativeQuery прямо сейчас, я ничего там не использую, потому что, возможно, есть канал столбцов, поэтому можно читать данные с первичными лицами, я искал и есть @SqlResultSetMapping, и я пытаюсь использовать его с моим запросом, вы использовали эту аннотацию? вы думаете, что это реальная проблема? заранее спасибо   -  person arkantos    schedule 13.01.2012
comment
@Rich его постоянство ссылки на затмение, которое я путаю с toplink и вместо этого пытаюсь использовать спящий режим   -  person arkantos    schedule 14.01.2012


Ответы (1)


Хорошо, я решил эту небольшую проблему. Я сделал это, создав класс сущности (даже не таблицу в БД) со столбцами, которые я выбираю в nativeQuery, а затем использовал этот класс в качестве параметра resultClass в нативе:

resultClass=com.talleresZeusWeb.entidades.BandejaCitas.class

Я пытался сделать эту аннотацию sqlresultsetmapping, но не знаю, как ее использовать в этом случае.

Надеюсь, кто-то найдет это полезным в какой-то момент, спасибо за ваши ответы @Rich

person arkantos    schedule 17.01.2012