当前位置: 首页 > 知识库问答 >
问题:

org.hibernate.TypeMismatchException:取数据时提供了错误类型的id

单凯捷
2023-03-14
    @Transactional
            @RequestMapping(value = "/question-list", method = RequestMethod.GET)
            public ModelAndView viewQuestionList(@RequestParam("course-code")String code, ModelAndView model){

                    model.setViewName("question-list");

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

                    List<Question> questions = 

(List<Question>)em.createQuery("SELECT q FROM Question q WHERE q.Course_coursecode =: code")
                        .setParameter("code", code).getResultList();

                model.addObject("questionList", questions);

                return model;
        }

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为java.lang.IllegalArgumentException:为类com.DatabaseProject.Questor.Model.Question提供了错误类型的id。应为:class java.lang.Integer,got class java.lang.String

有趣的是,当我输入一个int值作为搜索查询时,得到的结果是:

org.hibernate.TypeMismatchException:为类com.databaseproject.questor.model.question提供了错误类型的id。应为:class java.lang.Integer,got class java.lang.String

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;
    }
}

共有1个答案

苏宜人
2023-03-14

如@jb Nizet所指出的,观察实体,您正试图通过id查找一个问题

Question question = em.find(com.databaseproject.questor.model.Question.class, code);

传递字符串的“代码”。如果“code”表示id,则应将其转换为int:

model.setViewName("question-list");
int id = 0;
try
{
    if(code != null)
      id = Integer.parseInt(code);
}
catch (NumberFormatException e)
{
    id = 0;
}
Question question = em.find(com.databaseproject.questor.model.Question.class, id);

处理一个可能找不到的问题。如果“code”不是id,您应该进行一个查询(带有标准,本机或jpql)以获得一个问题实体列表,从中得到您需要的一个。

TypedQuery<Question> query = em.createQuery("SELECT q FROM Question q WHERE q.Course_coursecode = :coursecode", Question.class);
query.setParameter("coursecode", code);
List<Question> results = query.getResultList();
 类似资料:
  • 问题内容: 我收到错误消息: org.hibernate.TypeMismatchException:为类BEntity提供了错误类型的ID。预期:类BEntity,得到类AEntity HQL查询: hibernate源代码 当我在SQL Explorer中运行代码时,只能在代码中运行它会导致问题… 问题答案: 看来这是hibernate3.2.6版中的一个缺陷,该缺陷仍未解决。碰到了这个JIR

  • 我有一个模型看起来像这样: 如您所见,我有一个自动递增的PK作为模型的ID,但也是一个随机的UUID。我想使用数据库中的PK作为主键,但希望使用UUID作为面向公众的ID(用于URL等)。 我的仓库看起来像这样: 如您所见,我已将存储库设置为使用String作为ID。 最后,我在配置文件中设置实体查找,如下所示: 这对于GET和POST请求非常有效,但是由于某种原因,我在PUT和DELETE方法上

  • 我有一个带有8个JCombobox和文本字段的Jframe...当我按下提交按钮时得到了数据类型不匹配错误 如何解决这个错误?

  • 实例声明中的非法类型签名:succ::odd->Odd(使用InstanceSigs允许这样做) 没有它也能工作,但我想知道为什么会产生这个错误,如何为这个函数正确指定类型签名?

  • 我有一个实体User,它有两个Data类型的字段。 我有一个带有save()方法的Controller,它将用户的数据保存到postgesql数据库中。 我有一个JSON,我将它发送到controller { "name":"Max "," createdOn":"2019-07-26 11:13:39 "," modified on ":" 2019-07-26 11:13:39 " } 最后在

  • 我试图从节点js应用程序获取我的反应应用程序中的数据,我收到了下面给出的错误消息: react中的App.js 节点应用程序中的app.js 错误消息:TypeError: NetworkError尝试获取资源时出错。