【问题标题】:Hibernate creates column without name when using "default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP"Hibernate 在使用“更新 CURRENT_TIMESTAMP 时的默认 CURRENT_TIMESTAMP”时创建没有名称的列
【发布时间】:2012-11-20 16:26:47
【问题描述】:

我得到了以下实体:

@Entity
public class Person {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(columnDefinition="int(11)",nullable=false)
private int id;

@Column(columnDefinition="varchar(255)",nullable=false)
private String name;

@Column(columnDefinition="varchar(255)",nullable=false)
private String vorname;

@Column(columnDefinition="varchar(255)",nullable=false)
private String password;

@Column(columnDefinition="varchar(100)",nullable=false)
private String user;

@Column(columnDefinition="varchar(20)",nullable=false)
private String klasse;

@Temporal(TemporalType.TIMESTAMP)
@Column(name="timestamp",nullable = false,columnDefinition="default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP")
private Date timestamp = new Date();


public Person(){

}
@PreUpdate
public void updatePerson(){
    this.timestamp = new Date();
}


...getters
    ...setters

}

当调用 hibenate 时,当 hibernate 想要创建表时我得到一个错误。似乎发生了错误,因为列时间戳没有名称:

ERROR: HHH000389: Unsuccessful: create table Person (id int(11) not null auto_increment, klasse varchar(20) not null, name varchar(255) not null, password varchar(255) not null, 时间戳默认 CURRENT_TIMESTAMP on更新 CURRENT_TIMESTAMP 不为空,用户 varchar(100) 不为空,vorname varchar(255) 不为空,主键 (id)) type=MyISAM

有人知道hibernate为什么会这样吗?

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    这不是没有名称的列,而是没有类型的列。

    Hibernate 期望 columnDefinition 也包含列类型:

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="timestamp", nullable = false,
        columnDefinition="TIMESTAMP default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP")
    private Date timestamp = new Date();
    

    【讨论】:

    猜你喜欢
    • 2011-06-21
    • 2016-01-18
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 2023-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多