获取 org.hibernate.exception.SQLGrammarException 时通过休眠插入对象



我有两个表 1) krs_question_bank 2) krs_options

创建表krs_question_bank(question_idINT(11) 不空AUTO_INCREMENT,question瓦尔查尔(500) 不为空,course_idINT(11) 不为空,level_idINT(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_course(course_id) 在 更新级联 上 删除级联, 外键fk_krs_level_id_level约束 (level_id) 引用krs_level(level_id) 在 更新级联 上 删除级联  )  COLLATE='utf8_general_ci'  引擎=InnoDB  ;  创建表krs_options(options_idINT(11) 不为空AUTO_INCREMENT,option瓦尔查尔(100) 不为空,question_idINT(11) 不为空,answerINT(11) 不为空, 主键 (options_id), 索引fk_krs_question_bank_question_id_idx(question_id), 外键fk_krs_question_bank_question_id约束 (question_id) 引用krs_question_bank(question_id) 在 更新 级联 上 删除 级联  )  COLLATE='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(问题)时。 生成休眠查询,但是.. 我收到以下错误。 知道我该如何解决此错误吗?

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)

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

最新更新