2015-08-10 3 views
-2

Выполнение проекта с использованием Spring MVC. Основным является: когда студент подписывается, его данные будут храниться в таблице базы данных, и пароль будет отправлен на адрес электронной почты студентов.java method возвращает значение null

Так у меня есть:

@RequestMapping(value = "/save", method = RequestMethod.POST) 
public String dosignup(@Valid @ModelAttribute("student") Student student, HttpServletRequest request, 
    HttpServletResponse response, BindingResult result) { 

    studentService.addNewStudent(student.getName(), 
     student.getUsername(), student.getEmail(), student.getPassword()); 
    studentService.sendEmail(student); 
} 

StudentDao интерфейс:

public interface StudentDao { 
    public void saveStudent(Student student); 
    public void fetchinfo(Student student); 
} 

fetchinfo реализация в StudentDaoImpl является:

public void fetchinfo(Student student) { 
    String hql = "select password from student where email = :email"; 
    sessionFactory.getCurrentSession().createSQLQuery(hql) 
     .setParameter("email", student.getEmail()).uniqueResult(); 
} 

StudentService интерфейс:

public interface StudentService { 
    Student addNewStudent(String name, String username, String email, String password); 
    void sendEmail(Student student); 
    Student fetchinfo(String email); 
} 

и StudentServiceImpl является:

public User fetchinfo(String email) { 
    Student student = new Student(email); 
    studentDao.fetchinfo(student); 
    return student; 
} 

public void sendEmail(Student student) { 
    mailService.accountActivation(student); 
} 

Теперь проблема: а почта отправляется к студентам почты, но пароль null. Может кто-нибудь объяснить, почему это происходит?

ответ

1

В StudentDaoImpl вы не устанавливаете свойство пароля из результата запроса db. Перепишите соответствующую строку как:

student.setPassword(sessionFactory.getCurrentSession().createSQLQuery(hql) 
    .setParameter("email", student.getEmail()).uniqueResult()); 

Update

В то время как мы находимся в Hibernate, по соглашению студенческой организацией должны быть добытчиками и установки для каждого свойства. Тогда я хотел бы переписать StudentDaoImpl как:

public void fetchinfo(String email) { 

    String hql = "select s from student s where s.email = :email"; 

    return (Student)sessionFactory.getCurrentSession().createSQLQuery(hql) 
     .setParameter("email", email).uniqueResult(); 

} 

.м называю его student = studentDao.fetchinfo(email); (конечно наименованием методов должен измениться).

+0

Я не задал поле пароля как объект..почему я буду использовать это? – Salini

+0

my UserDao, у меня есть «public void fetchUserinfo (пользователь пользователя)», тогда мне нужно также отредактировать это поле ... am I r8? – Salini

+0

Я использовал ваш код ... он показывает ошибку: - java.lang.String не может быть передан com.news.Student – Salini

Смежные вопросы