Я пытаюсь сохранить объект с помощью метода session.save () из hibernate.До сих пор все работало хорошо для других классов, но теперь я застрял с этой синтаксической ошибкой SQL, и ничто, что я нашел, не могло помочь до сих пор.Вот результат консоли:
Error update: could not execute statement
May 23, 2019 5:47:26 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: 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 (is_answer, question_id, option_text) values (0, 97, 'asdfaoins')' at line 1
Вот метод из моего класса QuestionDAO:
@Transactional
public void addQuestionOption(String text, int questionId, boolean isAnswer) {
QuestionOption newOption = new QuestionOption();
newOption.setText(text);
newOption.setQuestionId(questionId);
newOption.setIsAnswer(isAnswer);
Configuration con = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(QuestionOption.class);
SessionFactory sf = con.buildSessionFactory();
Session session = sf.openSession();
try {
Transaction tx = session.beginTransaction();
session.save(newOption);
tx.commit();
} catch (Exception e) {
System.out.println("Error update: " + e.getMessage());
session.getTransaction().rollback(); // get
} finally {
session.close();
}
Вот мой класс модели QuestionOption:
@Entity
@Table(name = "option")
public class QuestionOption {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "option_text")
private String text;
@Column(name = "question_id")
private int questionId;
@Column(name = "is_answer")
private boolean isCorrectAnswer;
public QuestionOption(int id, String text, int questionId, boolean isAnswer) {
super();
this.id = id;
this.text = text;
this.questionId = questionId;
this.isCorrectAnswer = isAnswer;
}
public QuestionOption() {}
//getters & setters
Иу меня простой вызов:
QuestionOptionDAO odao = new QuestionOptionDAO();
odao.addQuestionOption("asdfaoins", 97, false);
Я упоминаю, что могу без проблем вставить в верстак, если просто жестко закодировать некоторые записи.Я также попробовал метод saveOrUpdate()
.Кроме того, я использую точно такой же метод для других классов, и вставка работает отлично.Любая идея, почему я получаю эту ошибку в этом случае?