J'utilise spring boot et jpa hibernate pour créer des tables dans ma base de données mais cela lève une exception étrange que je ne comprends pas vraiment.
@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
J'ai essayé d'utiliser @Column (name = 'quelque chose') et cela me donne toujours cette erreur étrange ...
3 Réponses :
option et options sont des mots-clés utilisés par MySQL. Veuillez utiliser un nom différent. https://dev.mysql.com/doc/refman/8.0/ fr / keywords.html
Comme les gens l'ont déjà dit, vous utilisez un mot-clé réservé MySql pour le nom de votre table. Si vous souhaitez conserver le nom de votre classe mais que vous souhaitez renommer votre table, vous devez ajouter
@Table(name="`option`")
@Entity
public class Option {
...
}
Ou si vous souhaitez vraiment conserver à la fois le nom de la classe et le nom de la table, vous devez mettre le nom de la table entre `marques:
@Table(name="something") // This will explicitly set the table name.
@Entity
public class Option {
...
}