我是 hibernate 和 Data JPA 的新手。我尝试插入到我的表中,但休眠查询中有一些列在我的表中不存在,因此会抛出错误。实际上,一开始当我运行代码时,hibernate 将这些额外的列添加到我的表中,然后我将application.properties中的spring.jpa.hibernate.ddl-auto值更改为none,但现在当我从表中删除这些额外的列时,尝试插入新记录我看到这些列位于插入方法中。我的实体类@Entitypublic class Content { @Id @NotNull @GeneratedValue Integer id; //this can be null if it is a question @Column(name = "content_id") Integer content_id; @NotBlank @NotNull @Column(name = "body") String body; @Column(name = "creationDate") Timestamp creationDate; @NotNull @Column(name = "user_id") Integer user_id; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getContent_id() { return content_id; } public void setContent_id(Integer content_id) { this.content_id = content_id; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public Timestamp getCreationDate() { return creationDate; } public void setCreationDate(Timestamp creationDate) { this.creationDate = creationDate; } public int getUser_id() { return user_id; } public void setUser_id(Integer user_id) { this.user_id = user_id; }}
2 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
经过大量搜索和工作,我发现 hibernate 表列的命名约定是用下划线分隔单词,这就是我在 hibernate 生成的查询中看到这些列的原因。因此,如果您的类中有一个像creationDate这样的变量,hibernate会尝试转换为creation_date,这样当我在这个方法中更改所有列的名称时,问题就解决了。另外,dtype列是一种特殊的列,当许多类使用同一个表插入数据时,hibernate将创建它,这是因为为了区分哪个类在表中插入记录,并且hibernate以该类的名称提供其值班级。
添加回答
举报
0/150
提交
取消