【问题标题】:GWT RPC Hibernate: error in converting list of objects into array of objectsGWT RPC Hibernate:将对象列表转换为对象数组时出错
【发布时间】:2012-01-17 15:36:09
【问题描述】:

我正在 Eclipse 中使用 GWT、Hibernate、RPC 开发一个简单的应用程序。我正在尝试在客户端页面上显示来自数据库的结果。在服务接口的实现中,我将对象列表形式的结果转换为对象数组,但出现错误。这是我的代码和错误:

服务接口:

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(new User[getUser.size()]); & 建议 Change method return type to User[]

【问题讨论】:

  • 错误仅出现在一个语句中,其中 Eclipse 提出了一个建议。您应该检查过 Eclipse 给出的建议。
  • 本帖与HibernateGWT无关 RPC...

标签: hibernate gwt rpc


【解决方案1】:

方法声明将 ArrayList 作为返回类型,而您返回 User[] ,因此Eclipse 是正确的,如果您单击该符号,Eclipse 会建议一些更正,如果您这样做,它将起作用!

【讨论】:

  • 您的回答很可能是正确的,但到目前为止我无法提交它,因为在完成此方法实现之前我还有另一个问题。你能看到我关于这个应用程序的帖子吗:stackoverflow.com/questions/8493194/…
猜你喜欢
  • 2013-05-20
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多