2011-12-10 38 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