我在数据库中有一个列,它在实体类中定义如下:
@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在创建表时报告以下错误:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在“
附近使用正确的语法TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
,
无法理解为什么要添加额外的滴答以及如何避免它。
版本详情如下:
<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>
答案 0 :(得分:2)
请删除以下配置行:
<property name="hibernate.globally_quoted_identifiers">true</property>
这可能不需要,几乎肯定会导致您遇到的问题。
<强>更新强>
最终通过将MySQL的方言改为MySQL5来解决这个问题:
org.hibernate.dialect.MySQL5Dialect