【问题标题】:hibernate inserting without left ticks休眠插入没有左刻度
【发布时间】:2013-09-26 22:58:38
【问题描述】:

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

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

【问题讨论】:

标签: java hibernate


【解决方案1】:

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

例如:

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

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

您无需开启全局引用。

【讨论】:

    【解决方案2】:

    尝试添加选项hibernate.globally_quoted_identifiers=true

    来源:Automatic reserved word escaping for Hibernate tables and columns

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多