当前位置: 首页 > 知识库问答 >
问题:

当使用“update CURRENT_TIMESTAMP上的DEFAULT CURRENT_TIMESTAMP”时,Hibernate创建没有名称的列

颛孙信厚
2023-03-14

我得到了以下实体:

@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想要创建表时,我得到一个错误。似乎发生了错误,因为列时间戳没有名称:

错误:HHH000389:失败:创建表Person(id int(11)不为null auto_increment,klasse varchar(20)不为null,name varchar(255)不为null,password varchar(255)不为null,timestamp默认更新CURRENT_TIMESTAMP,user varchar(100)不为null,vorname varchar(255)不为null,primary key(id))TYPE=MYISAM

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

共有1个答案

沈俊美
2023-03-14

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

Hibernate希望columndefinition也包含列类型:

@Temporal(TemporalType.TIMESTAMP)
@Column(name="timestamp", nullable = false,
    columnDefinition="TIMESTAMP default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP")
private Date timestamp = new Date();
 类似资料:
  • 还有这个 UnsatisfiedDependencyException:创建名为“Client Service”的bean时出错:通过字段“Client Repository”表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.nosuchbeandefinitionexception:没有“com.kopylov.repository.clien

  • 问题内容: 几天来,我一直在尝试创建Spring CRUD应用程序。我糊涂了。我无法解决此错误。 还有这个 客户端控制器 ClientServiceImpl 客户资料库 我浏览了许多类似的问题,但是没有人回答不能帮助我。 问题答案: ClientRepository应该用标记注释。使用你当前的配置,Spring将不会扫描该类并对其有所了解。在启动和连接时,找不到ClientRepository类。

  • 问题内容: 在hibernate状态下使用sqlserver方言。 我希望hibernate在创建表时使用带引号的标识符。 除了重命名字段外,还有其他任何处理方法的想法吗? 问题答案: 遇到相同的问题,但表名为。如果你设定 然后所有数据库标识符将被引用。 在这里找到我的答案 表名称中的特殊字符hibernate给出错误 并在这里找到所有可用的设置 https://docs.jboss.org/hi

  • 问题内容: 我将所有的XML Spring配置都转换为Java代码配置,但是由于我有一个丑陋的异常,所以我无法运行我的所有测试(它们之前都曾进行过测试): 这是我的测试课: 和我的: 我在测试课上尝试了推子,但这没用。该项目是Spring MVC项目,但是现在我仅测试服务层,所以为什么要在我的课程上放置该注释?即使有了该注释,也会出现另一个错误。那么,这里发生了什么? 问题答案: 您的配置很好,除

  • 问题内容: 我正在使用Springframework和Tomcat创建一个简单的REST服务。响应应该像{“ id”:“ 101”,“ name”:“ Ram”}之类的json中。每次运行时,出现以下错误 从这里开始,以下是我的Java代码和xml文件。 POM.xml web.xml front-controller-servlet.xml json / User.java json / Use