Java Spring MVC返回多个值

时间:2016-02-25 11:19:33

标签: java spring spring-mvc

我想在执行查询后从函数返回两个值,即结果&消息

@Repository
@Transactional(value = "myTransactionManager")
public class UserFunctionsDAOImpl implements UserFunctionsDAO {

    @Autowired
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory)
    {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public List<Object[]> registerUser(Users user) {
        // TODO Auto-generated method stub
        ReturnData returnData = new ReturnData(); 

        Query query = this.sessionFactory.getCurrentSession().createQuery("SELECT COUNT(*) FROM Users WHERE emailID = :email_ID OR mobileNo = :mobile_No");
        query.setString("email_ID", user.getEmailID());
        query.setString("mobile_No", user.getMobileNo());

        if(((long)query.uniqueResult()) > 0)
        {
            returnData.setResult(false);
            returnData.setMessage("Email or Mobile number already exists");
            return (List<Object[]>);
        }
        else
        {
            Query query = this.sessionFactory.getCurrentSession().createSQLQuery("");
            query.executeUpdate();
            returnData.setResult(true);
            returnData.setMessage("User Registered Successfully");
            return (List<Object>[])returnData;
        }
    }

}

public class ReturnData
{
    Boolean result;
    String message;

    //getters and setters
}

错误

java.lang.ClassCastException: com.pir.model.ReturnData cannot be cast to java.util.List

如何解决此错误?

1 个答案:

答案 0 :(得分:2)

您将返回无法转换为方法返回类型的对象。

重写这样的方法:

@Override
    public ReturnData registerUser(Users user) {
      // TODO Auto-generated method stub
    ReturnData returnData = new ReturnData(); 

    Query query = this.sessionFactory.getCurrentSession().createQuery("SELECT COUNT(*) FROM Users WHERE emailID = :email_ID OR mobileNo = :mobile_No");
    query.setString("email_ID", user.getEmailID());
    query.setString("mobile_No", user.getMobileNo());

    if(((long)query.uniqueResult()) > 0)
    {
        returnData.setResult(false);
        returnData.setMessage("Email or Mobile number already exists");
        return returnData;
    }
    else
    {
        Query query =       this.sessionFactory.getCurrentSession().createSQLQuery("");
        query.executeUpdate();
        returnData.setResult(true);
        returnData.setMessage("User Registered Successfully");
        return returnData;
    }
}