我想在执行查询后从函数返回两个值,即结果&消息
@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
如何解决此错误?
答案 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;
}
}