GWT RPC Hibernate: ошибка при преобразовании списка объектов в массив объектов - PullRequest
0 голосов
/ 11 декабря 2011

Я разрабатываю простое приложение, используя GWT, Hibernate, RPC в Eclipse. Я пытаюсь отобразить результат из базы данных на странице клиента. При реализации интерфейса службы я конвертирую результаты в виде списка объектов в массив объектов, но получаю ошибку. Вот мой код и ошибка:

Сервисные интерфейсы:

import java.util.ArrayList;

import hibDomain.User;

import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

@RemoteServiceRelativePath("testService")
public interface RpctestService extends RemoteService {

    public String addUser(String firstName,String lastName) throws IllegalArgumentException;
    public  ArrayList<User> getUser();
}
----------------

package rpctest.client;

import java.util.ArrayList;

import hibDomain.User;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface RpctestServiceAsync {

    void addUser(String firstName, String lastName,
            AsyncCallback<String> callback);

    void getUser(AsyncCallback<ArrayList<User>> asyncCallback);

}

реализация:

package rpctest.server;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
//import com.hib.HibernateUtil;

import org.hibernate.Session;
import org.hibernate.Transaction;
import hibDomain.User;
import rpctest.client.RpctestService;

public class RpctestServiceImpl extends RemoteServiceServlet  implements RpctestService {

        public String addUser(String name1, String name2)
            throws IllegalArgumentException {

              Transaction trns = null;
              Session session = HibernateUtil.getSessionFactory().openSession();
              try {
               trns = session.beginTransaction();

               User user = new User();

               user.setFirstName(name1);
               user.setLastName(name2);

               session.save(user);

               session.getTransaction().commit();
              } catch (RuntimeException e) {
               if(trns != null){
                trns.rollback();
               }
               e.printStackTrace();
              } finally{
               session.flush();
               session.close();
              }

        return name1+name2; // to test flextable entris only 
    }

    //@Override
    public  ArrayList<User> getUser()
             {

              List<User> getUser = null;

              Transaction trns = null;
              Session session = HibernateUtil.getSessionFactory().openSession();
              try {
               trns = session.beginTransaction();
               getUser = session.createQuery("from User").list();

               //* for (Iterator<User> iter = getUser.iterator(); iter.hasNext();) 
              //{
                //User user = iter.next();
                //
              //*}             

               trns.commit();
              } catch (RuntimeException e) {
               if(trns != null){
                trns.rollback();
               }
               e.printStackTrace();
              } finally{
               session.flush();
               session.close();
             }
              return getUser.toArray(new User[getUser.size()]);
        }
}

Подсветка Eclipse return getUser.toArray (новый пользователь [getUser.size ()]); & предлагает Change method return type to User[]

1 Ответ

0 голосов
/ 11 декабря 2011

Объявление метода говорит ArrayList как тип возвращаемого значения, в то время как вы возвращаете User[] , поэтому Eclipse прав, и если вы нажмете на этот символ, Eclipse предложит некоторые исправления, которые, если вы это сделаете, будут работать !!

...