Есть ли в Hibernate определенное условие для именования столбцов, начинающихся с той же буквы? - PullRequest
1 голос
/ 31 марта 2019

Я использую Spring Boot и Jpa Hibernate для создания некоторых таблиц в моей базе данных, но это вызывает странное исключение, которое я не совсем понимаю.

@Entity
public class Option {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String marca;
    private String model;
    private String anFabrDeLa;
    private String anFabrPanaLa;
    private String pretDeLa;
    private String pretPanaLa;
    private String oras;
    private int score;
    //constructors, getters and setters

}

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 (id integer not null, an_fabr_de_la varchar(255), an_fabr_pana_la varchar' at line 1

Я пытался использовать @Column(name='something'), и это все еще дает мне эту странную ошибку ...

Ответы [ 3 ]

1 голос
/ 31 марта 2019

опция и опции - это ключевые слова, используемые MySQL.Пожалуйста, используйте другое имя.https://dev.mysql.com/doc/refman/8.0/en/keywords.html

enter image description here

1 голос
/ 01 апреля 2019

Как уже говорили, вы используете зарезервированное ключевое слово MySql для имени таблицы.Если вы хотите сохранить имя вашего класса, но хотите переименовать вашу таблицу, вы должны добавить

@Table(name="something") // This will explicitly set the table name.
@Entity
public class Option {
   ...
}

или если вы действительно хотите сохранить и имя класса, и имя таблицы, вы должны поставить имя таблицы между `marks:

@Table(name="`option`")
@Entity
public class Option {
   ...
}
1 голос
/ 31 марта 2019

option - это ключевое слово MySQL .Выберите другое имя таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...