2011-12-10 39 views
-2

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

服务接口:

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的高灯返回getUser.toArray(新用户[getUser.size( )]); &表明Change method return type to User[]

+0

错误是只有一个声明,其中Eclipse建议的建议。你应该检查Eclipse给出的建议。 –

+1

这篇文章与'Hibernate','GWT'或者'RPC'无关...... –

回答

0

方法声明中说ArrayList为返回类型,而你正在返回User[],所以Eclipse是正确的,如果你点击该符号,Eclipse会提出一些修正,如果你这样做,将工作! !

+0

你的回答很可能是正确的,但到目前为止我无法提交它,因为在完成此方法实现之前,我有另一个问题。你能否看到我的这篇文章关于这个相同的应用程序: http://stackoverflow.com/questions/8493194/using-gwt-to-insert-data-into-mysql-using-hibernate – enterprize