Это было бы потому, что все, что возвращает (Login) it.next()
, не является Login
объектом. Вы можете либо воспользоваться отладчиком и пошаговым желобом и посмотреть, что он возвращает, либо сделать версию для бедняка и распечатать ее, чтобы увидеть, что она возвращает:
while (it.hasNext())
{
Object bean1= it.next();
System.out.println(bean1.getClass().getName());
}
ОБНОВЛЕНИЕ на основе ваших комментариев:
Вы знаете, что возвращает список, содержащий список ваших объектов входа в систему:
while (it.hasNext())
{
List list1 = (List)it.next();
for (Object bean : list1) {
System.out.println(((Login)bean).getClinicId());
}
}
Я скажу, что я думаю, что вы делаете что-то не так, и что ваш запрос, вероятно, должен просто возвращать список логинов для начала. Поскольку кажется, что ArrayList в родительском списке будет содержать только один объект, так что вы, вероятно, могли бы сделать:
public static List Authenticate(String userName, String password) {
List names = template.query("select clinicId from doc_user where userName='"+userName+"' and passwd='"+password+"'",
new RowMapper() {
public Object mapRow(ResultSet resultSet, int i) throws SQLException
{
Login loginBean = new Login();
loginBean.setClinicId(String.valueOf(resultSet.getInt(1)));
return loginBean ;
}
});
return names;
}
А затем обработайте их кодом, который, как вы изначально думали, сработает:
List listLogin = LoginDao.Authenticate(username,password);
Iterator it = listLogin.iterator();
while (it.hasNext()) {
Login bean1= (Login) it.next();
System.out.println(bean1.getClinicId());
}