我在数据库中有一列在实体类中定义如下:
@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/