休眠–如果名为column的列是关键字,例如DESC,则无法插入

问题

MySQL数据库中名为“ category”的表包含一个“ 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
);

Hibernate XML映射文件

<hibernate-mapping>
    <class name="com.mkyong.stock.Category" table="category" catalog="mkyongdb">
        ...
        <property name="desc" type="string">
            <column name="DESC" not-null="true" />
        </property>
       ...
    </class>
</hibernate-mapping>

或Hibernate批注

@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

在Hibernate中,要将其插入“关键字”列名称中,应使用“ [[column name] ””这样的名称将其括起来。

Hibernate XML映射文件

<hibernate-mapping>
    <class name="com.mkyong.stock.Category" table="category" catalog="mkyongdb">
        ...
        <property name="desc" type="string">
            <column name="[DESC]" not-null="true" />
        </property>
       ...
    </class>
</hibernate-mapping>

或Hibernate批注

@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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值