Iteracja po List<AnyTypeArray>

0

Witam,
piszę WebService i Klienta. Chciałbym zrobić coś takiego, że w kliencie podaje w jTextField'ach przedział ID i wysyłam odpowiednie zapytanie do WS. Ten to zapytanie wykonuje i zwraca rekordy. Rekordy te wyświetlane są w kliencie w jTable.
Mam taki kod w WS:

    @WebMethod(operationName = "selectSample")
    public List<Object[]> selectSample(@WebParam(name = "query") String query) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        List<Sample> result = session.createQuery(query).list();
        HibernateUtil.getSessionFactory().close();
        List<Object[]> list = new ArrayList<Object[]>();
        for(Sample sample : result) {
            Object[] obj = new Object[]{sample.getBand(), sample.getBanda(), sample.getBandacorr()};
            list.add(obj);
        }
        return list;
    }

A taki w kliencie:

    @Action
    public void pokaz() {
        WebApp_Service service = new WebApp_Service();
        WebApp myws = service.getWebAppPort();
        DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
        int fromId, toId;
        while(model.getRowCount() != 0)
            model.removeRow(0);
        if(jTextField1.getText().equals(""))
            fromId = 0;
        else
            fromId = Integer.parseInt(jTextField1.getText());
        if(jTextField2.getText().equals(""))
            toId = 0;
        else
            toId = Integer.parseInt(jTextField2.getText());
        String query = "from Sample s where s.sampleid >= " + fromId + " and s.sampleid <= " + toId;
        if(fromId >= 6725220 && toId <= 6725300 && fromId <= toId) {
            //myws.selectSample(query);
            //iteracja to zwroconych rekordach
            //model.addRow(rekord);     
        } else
            return;
    }

addRow() potrzebuje jako parametru Object[] i dlatego też każdy rekord sprowadzam da takiej postaci i zwracam listę wszystkich rekordów. Teraz muszę ją tylko przeiterować i każdy Object[] z listy wrzucać do addRow(). Tyle, że mimo deklaracji, że zwracam List<Object[]> według klienta zwracam List<anytypearray> i nie wiem jak to przeiterować, żebym miał Object[].

0

Napisz dto reprezentujące każdy wiersz tabeli (np. SampleDto) i zwracaj List<sampledto>, a nie List<Object[]>.

Dwie dodatkowe uwagi do tego kodu:
-kod maksymalnie niebezpieczny, gdyż przekazujesz sql jako parameter
-kod jest bardzo niewydajny, gdyż za każdym razem tworzysz SessionFactory. SessionFactory powinien być tworzony tylko raz. Powinieneś zamykać sesję (session), nie sessionFactory.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0