1

I'm really stuck here and I need help, I've been trying to run my application and let hibernate create tables using my java entities, but it keeps raising this exception :

Unable to execute schema management to JDBC target [create table answer (id_answer bigint not null auto_increment, order integer, text varchar(255), question_id_question bigint, primary key (id_answer))]

Says that there is an error in my SQL syntax, even though i didn't write any sql, i let hibernate handle it all.

Below are my classes and configuration:

Answer.java :

package com.sfm.elearn.business.entities;

    import java.io.Serializable;
    import java.util.List;
    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.ManyToOne;
    import javax.persistence.OneToMany;
    import javax.persistence.OneToOne;
    import com.fasterxml.jackson.annotation.JsonIgnore;
    @Entity
    public class Answer implements Serializable {
        @Id @GeneratedValue
        private Long idAnswer;
        private String text;
        private Integer order;
        @ManyToOne
        @JsonIgnore
        private Question question;
        public Answer() {
            super();
            // TODO Auto-generated constructor stub
        }
        public Answer(String text, Integer order, Question question) {
            super();
            this.text = text;
            this.order = order;
            this.question = question;
        }
        public Long getIdAnswer() {
            return idAnswer;
        }
        public void setIdAnswer(Long idAnswer) {
            this.idAnswer = idAnswer;
        }
    }

This is my configuration :

spring.datasource.url=jdbc:mysql://localhost:3306/ElearningBase

spring.datasource.username=root
spring.datasource.password=654321
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1

spring.jpa.show-sql=true

spring.jpa.hibernate.ddl-auto=update

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

EDIT: I found the error , the attribute "order" is a reserved SQL keyword that's what was causing the error, changing the variable's name solved it!

ATidedHumour
  • 183
  • 3
  • 9

1 Answers1

0

If Hibernate is creating your tables for your then your hibernate.ddl-auto property should be set to 'create' or 'create-drop'. The update option means Hibernate expects your tables to already exist. See: Hibernate hbm2ddl.auto possible values and what they do?

Adam
  • 1,724
  • 13
  • 16
  • Update does create tables if they aren't available in the database. Still, i tried the create option and it just ignores and dosen't create the tables that raise exceptions. – ATidedHumour Aug 07 '18 at 12:15