Рубрики
Без рубрики

Спящий режим – Невозможно вставить, если столбец с именем является ключевым словом, например DESC

– – Спящий режим – Невозможно вставить, если столбец с именем является ключевым словом, например, ОПИСАННЫМ

Проблема

Таблица с именем “категория” в базе данных MySQL содержит ключевое слово ” DESC ” в качестве имени столбца.

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
);

Спящий режим XML-файла сопоставления


    
        ...
        
            
        
       ...
    

Или Аннотация перехода в спящий режим

@Column(name = "DESC", nullable = false)
	public String getDesc() {
		return this.desc;
	}

При вставке в таблицу категорий появляется следующее сообщение об ошибке:

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

Решение

В режиме гибернации, чтобы вставить имя столбца “ключевое слово”, вы должны заключить его вот так ‘ [имя столбца] ‘.

Спящий режим XML-файла сопоставления


    
        ...
        
            
        
       ...
    

Или Аннотация перехода в спящий режим

@Column(name = "[DESC]", nullable = false)
	public String getDesc() {
		return this.desc;
	}

Оригинал: “https://mkyong.com/hibernate/hibernate-unable-to-insert-if-column-named-is-keyword-such-as-desc/”