Hibernate - Impossible d'insérer si la colonne nommée est un mot-clé, tel que DESC
Problème
Une table nommée «catégorie» dans la base de données MySQL, contient un mot-clé «DESC» comme nom de colonne.
CREATE TABLE `category` ( `CATEGORY_ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `NAME` varchar(10) NOT NULL, `DESC` varchar(255) NOT NULL, PRIMARY KEY (`CATEGORY_ID`) USING BTREE );
Fichier de mappage XML Hibernate
... ...
Ou annotation Hibernate
@Column(name = "DESC", nullable = false) public String getDesc() { return this.desc; }
Lors de l'insertion dans la table des catégories, frappe le message d'erreur suivant:
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 'DESC) values ('CONSUMER', 'CONSUMER COMPANY')' at line 1 ... 35 more
Solution
Dans Hibernate, pour l'insérer dans le nom de la colonne «mot-clé», vous devez le mettre comme ceci «[column name]».
Fichier de mappage XML Hibernate
... ...
Ou annotation Hibernate
@Column(name = "[DESC]", nullable = false) public String getDesc() { return this.desc; }