猿问

hibernate 生成错误的查询

我是 hibernate 和 Data JPA 的新手。我尝试插入到我的表中,但休眠查询中有一些列在我的表中不存在,因此会抛出错误。实际上,一开始当我运行代码时,hibernate 将这些额外的列添加到我的表中,然后我将application.properties中的spring.jpa.hibernate.ddl-auto值更改为none,但现在当我从表中删除这些额外的列时,尝试插入新记录我看到这些列位于插入方法中。


我的实体类


@Entity

public 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;

    }

}


凤凰求蛊
浏览 142回答 2
2回答

至尊宝的传说

经过大量搜索和工作,我发现 hibernate 表列的命名约定是用下划线分隔单词,这就是我在 hibernate 生成的查询中看到这些列的原因。因此,如果您的类中有一个像creationDate这样的变量,hibernate会尝试转换为creation_date,这样当我在这个方法中更改所有列的名称时,问题就解决了。另外,dtype列是一种特殊的列,当许多类使用同一个表插入数据时,hibernate将创建它,这是因为为了区分哪个类在表中插入记录,并且hibernate以该类的名称提供其值班级。

慕婉清6462132

但是您的内容实体中确实有 content_id 和creation_date,问题实体是从其扩展而来的
随时随地看视频慕课网APP

相关分类

Java
我要回答