【发布时间】: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 给出的建议。
-
本帖与
Hibernate、GWT无关或RPC...