【发布时间】: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_course(course_id)更新级联删除级联,
约束fk_krs_level_id_level外键(level_id)参考krs_level(level_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_bank(question_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