java - Hibernate 在 columnDefinition 周围加上反引号

标签 java hibernate

我在数据库中有一列在实体类中定义如下:

@Column(name="lastlogindate", columnDefinition ="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
private Timestamp lastlogindate;

正在生成的create table命令如下:

create table usermaster (
  lastlogindate `TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`)

什么是有效的

create table usermaster (
  lastlogindate TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)

Hibernate 在创建表时报如下错误:

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 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

无法理解为什么要添加额外的刻度以及如何避免。

版本详情如下:

  • hibernate 版本:4.3.8.Final
  • MySQL版本:5.6.26
  • MySQL方言信息:
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="transaction.factory_class">
    org.hibernate.transaction.JDBCTransactionFactory</property>
    <property name="current_session_context_class">thread</property>
    <property name="show_sql">true</property>
    <property name="hibernate.connection.autocommit ">false</property>
    <property name="hibernate.globally_quoted_identifiers">true</property>

最佳答案

请删除以下配置行:

<property name="hibernate.globally_quoted_identifiers">true</property>

这可能不需要,而且几乎肯定会导致您遇到的问题。

更新:

最终通过将方言从通用 MySQL 更改为 MySQL5 解决了这个问题:

org.hibernate.dialect.MySQL5Dialect

关于java - Hibernate 在 columnDefinition 周围加上反引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46375086/

相关文章:

java - Hibernate 与 SparkJava 不兼容?

java - hibernate envers 对多对多关系的删除操作未得到审核

java - 无法添加或更新子行: a foreign key constraint fails - One-To-Many relationship - Hibernate

java - 使用 Ortho2D 在 OpenGL 中映射四边形纹理时出现问题

java - 使用包含列表(映射)作为值的 Hashmap 处理文本文件 - 如何处理?

java - Hibernate 查询@JoinColumn 和mappedBy

java - 我们可以仅在初始设置时创建一次 Lucene 索引吗?

java - 如何使用另一个类中的 int?

java - 换行符与系统换行符不同

java - Android中是否有波斯(Shamsi或Jalali)日历的库或算法?