2

我正在尝试使用休眠进行插入,但遇到了问题。当我使用以下代码时

@Override
    public Serializable addTestResult(Result test_result) {
        // TODO Auto-generated method stub
        return getCurrentSession().save(test_result);
    }

最终查询如下所示:

mysql> insert into test_results (db, host) values ('db1', 'host1');

由于列名中缺少左勾号,因此被 mysql 拒绝。如何让休眠在列名周围添加引号,以便查询如下所示:

mysql> insert into test_results (`db`, `host`) values ('db1', 'host1');
4

2 回答 2

3

在 .hbm.xml 或映射注释中使用 ` 反引号引用需要引用的表/列名称。

例如:

<property name='DB" column='`db`' />
@Column(name="`db`")

这告诉 Hibernate 将这些标识符引用到数据库中。例如,我将它与“USER”表一起使用。与任何应用程序一样,大多数表名和列名并不冲突,但user往往是 SQL 关键字。

您无需开启全局引用。

于 2013-09-27T02:49:37.553 回答
1

尝试添加选项hibernate.globally_quoted_identifiers=true

来源:Hibernate 表和列的自动保留字转义

于 2013-09-27T01:36:02.587 回答