2016-04-10 3 views
0

У меня есть запрос mysql, который возвращает несколько строк, если я запустил его в редакторе запросов mysql workbench. Теперь я хочу вывести результаты из запроса в список, добавить список в модель и показать результат в представлении. Но, я получаю сообщение об ошибке. Что я делаю неправильно, и как это можно исправить?javax.el.PropertyNotFoundException: свойство не найдено по типу java.lang.String в приложении Spring-Hibernate-MySQL

Фрагмент кода от контроллера:

@Transactional 
     @RequestMapping(value = "/question-editor", method = RequestMethod.GET) 
     public ModelAndView viewQuestionsToEdit(@RequestParam("username")String user, ModelAndView model, Principal principal){ 

       model.setViewName("question-editor"); 

       int id2 = 0; 
       try 
       { 
         if(user != null) 
           id2 = Integer.parseInt(user); 
       } 
       catch (NumberFormatException e) 
       { 
         id2 = 0; 
       } 

       Question question = em.find(com.databaseproject.questor.model.Question.class, id2); 
       model.addObject("question", question); 

       List<Question> questions = (List<Question>)em.createNativeQuery("SELECT q.questionText FROM question q WHERE idQuestion IN (SELECT qchq.Question_idQuestion FROM questioncart_has_question qchq JOIN (SELECT qc.idQuestionCart FROM questioncart qc WHERE User_username =:id2 ORDER BY idQuestionCart DESC LIMIT 1) qc ON qchq.QuestionCart_idQuestionCart = qc.idQuestionCart);") 
           .setParameter("id2", user).getResultList(); 

       model.addObject("questionstoedit", questions); 

       String name = principal.getName(); //get logged in username 
       model.addObject("username", name); 

       return model; 
     } 

Попытка получить значения в файл вида JSP:

<c:forEach var="question" items="${questionstoedit}"> 
    <p>Question no. ${question.questionText}</p> 
</c:forEach> 

Ошибка я получаю:

javax. el.PropertyNotFoundException: свойство 'questionText' не найдено по типу java.lang.String

Вот класс модели: Question.java:

package com.databaseproject.questor.model; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Transient; 

@Entity 
public class Question { 

    @Id 
    private int idQuestion; 
    private String questionText; 
    private String solutionText; 
    private byte[] image; 
    private String filepath; 
    private int year; 
    private String User_username; 
    private int Teacher_idTeacher; 
    private String Course_coursecode; 

    @Transient 
    private String encodedImage; 

    public int getIdQuestion() { 
     return idQuestion; 
    } 

    public void setIdQuestion(int idQuestion) { 
     this.idQuestion = idQuestion; 
    } 

    public String getQuestionText() { 
     return questionText; 
    } 

    public void setQuestionText(String questionText) { 
     this.questionText = questionText; 
    } 

    public String getSolutionText() { 
     return solutionText; 
    } 

    public void setSolutionText(String solutionText) { 
     this.solutionText = solutionText; 
    } 

    public byte[] getImage() { 
     return image; 
    } 

    public void setImage(byte[] image) { 
     this.image = image; 
    } 

    public String getFilepath() { 
     return filepath; 
    } 

    public void setFilepath(String filepath) { 
     this.filepath = filepath; 
    } 

    public int getYear() { 
     return year; 
    } 

    public void setYear(int year) { 
     this.year = year; 
    } 

    public String getUser_username() { 
     return User_username; 
    } 

    public void setUser_username(String user_username) { 
     User_username = user_username; 
    } 

    public int getTeacher_idTeacher() { 
     return Teacher_idTeacher; 
    } 

    public void setTeacher_idTeacher(int teacher_idTeacher) { 
     Teacher_idTeacher = teacher_idTeacher; 
    } 

    public String getCourse_coursecode() { 
     return Course_coursecode; 
    } 

    public void setCourse_coursecode(String course_coursecode) { 
     Course_coursecode = course_coursecode; 
    } 

    public String getEncodedImage() { 
     return encodedImage; 
    } 

    public void setEncodedImage(String encodedImage) { 
     this.encodedImage = encodedImage; 
    } 
} 
+0

можно поделиться вопросом класс? –

+0

Разделил вопрос.java модель класса. @RafikBELDI –

ответ

0

Изменить тип возврата к списку строки:

List<String> questions = (List<String>)em.createNativeQuery("..."); 

Вы выбираете List строк, без он не может быть сопоставлен с классом Question.

Применить это изменение на JSP:

<c:forEach var="question" items="${questionstoedit}"> 
    <p>Question no. ${question}</p> 
</c:forEach> 
+0

спасибо. Это сработало. –

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