【问题标题】:Getting org.hibernate.exception.SQLGrammarException while inserting objects through hibernate通过休眠插入对象时获取org.hibernate.exception.SQLGrammarException
【发布时间】:2017-11-12 08:08:22
【问题描述】:

我有两张桌子 1) krs_question_bank 2) krs_options

创建表krs_question_bank ( question_id INT(11) NOT NULL AUTO_INCREMENT, question VARCHAR(500) 非空, course_id INT(11) 非空, level_id INT(11) 非空, 主键 (question_id), 索引fk_krs_course_id_course_idx (course_id), 索引fk_krs_level_id_level_idx (level_id), 约束fk_krs_course_id_course外键(course_id)参考krs_coursecourse_id)更新级联删除级联, 约束fk_krs_level_id_level外键(level_id)参考krs_levellevel_id)更新级联删除级联 ) 整理='utf8_general_ci' 引擎=InnoDB ; 创建表krs_options ( options_id INT(11) NOT NULL AUTO_INCREMENT, option VARCHAR(100) 非空, question_id INT(11) 非空, answer INT(11) 非空, 主键 (options_id), 索引fk_krs_question_bank_question_id_idx (question_id), 约束fk_krs_question_bank_question_id外键(question_id)参考krs_question_bankquestion_id)更新级联删除级联 ) 整理='utf8_general_ci' 引擎=InnoDB ; 我有两个课程: 1.问题.java 2. 选项.java
     package com.kr.vo;
     import java.util.List;
     import javax.persistence.CascadeType;
     import javax.persistence.Column;
     import javax.persistence.Embedded;
     import javax.persistence.Entity;
     import javax.persistence.FetchType;
     import javax.persistence.GeneratedValue;
     import javax.persistence.Id;
     import javax.persistence.JoinColumn;
     import javax.persistence.OneToMany;
     import javax.persistence.Table;     
     @Entity
     @Table(name="krs_question_bank")
     public class Question{
         @Id
         @GeneratedValue
         @Column(name = "question_id")
         private int questionId;         
         @Column(name = "question")
         private String questionText;         
         @Column(name = "course_id")
         private int course;         
         @Column(name = "level_id")
         private int level;         
         @OneToMany(cascade={CascadeType.ALL})
        @JoinColumn(name="question_id")
         private List<Option> options;     
     //getter and setter methods
    }

    package com.kr.vo;
    import java.util.List;
    import javax.persistence.Column;
    import javax.persistence.Embedded;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;    
    @Entity
    @Table(name="krs_options")
    public class Option{
        @Id
        @GeneratedValue
        @Column(name ="options_id")
        private int optionId;        
        @Column(name = "option")
        private String optionText;        
        @Column(name = "answer")
        private int answer;            
        @ManyToOne
        @JoinColumn(name="question_id", 
                    insertable=false, updatable=false, 
                    nullable=false)
        private Question question;    
        //getter and setter methods
    } 

当我调用 session.save(Question) 时。 生成休眠查询但是.. 我收到以下错误。 知道如何解决这个错误吗?

 Hibernate: insert into krs_question_bank (course_id, level_id, question) values (?, ?, ?)
     Hibernate: insert into krs_options (answer, option) values (?, ?)
     Jun 10, 2017 3:54:07 PM org.apache.catalina.core.StandardWrapperValve invoke
     SEVERE: Servlet.service() for servlet [com.kr.servlets.AddQuestion] in context with path [/MyWebApp] threw exception
     org.hibernate.exception.SQLGrammarException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'option) values (1, 'james')' at line 1
        at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)

【问题讨论】:

  • @Tahir Hussain Mir 通过休眠创建的查询。我没有写任何查询。当我调用 session.save(question);我收到上述错误。

标签: mysql hibernate jakarta-ee


【解决方案1】:

Option 是 MYSQL 服务器中的关键字。为您的表使用不同的名称。同样,检查所有属于 MYSQL 关键字的名称,并将它们重命名为一些合适的名称。

【讨论】:

  • 谢谢!得到输出。
  • 我很高兴亲爱的。 ^_^ @santosh
猜你喜欢
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多