一尘不染

使用hibernate创建新表时如何维护列顺序?

hibernate

这是我的pojo,注为实体

@Entity
@Table(name = "book", catalog = "book_db")
public class Book {
    private Integer bookId;
    private String bookName;
    private String bookShortDesc;
    private String bookDesc;
    private String bookAuthor;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "book_id", unique = true, nullable = false)
public Integer getBookId() {
    return this.bookId;
}

@Column(name = "book_name", nullable = false, length = 256)
public String getBookName() {
    return this.bookName;
}
@Column(name = "book_short_desc", nullable = false, length = 1024)
public String getBookShortDesc() {
    return this.bookShortDesc;
}

等等......

上面的实体是使用注释创建的,当我查看mysql数据库时,没有按顺序创建列,而是在下面编写的,相反,第一列是book_id,然后是book_desc,然后是book_athor,然后是book_short_desc,然后是book_name。

我的问题是如何告诉hibernate以与我在Java代码中编写的顺序相同的顺序创建列?

有没有任何注释?

问候


阅读 273

收藏
2020-06-20

共1个答案

一尘不染

Hibernate小组的一位成员
说,假设您的意思是数据库表是通过hbm2ddl.auto设置为CREATE或类似方式生成的,则
至少在2008年之前 无法指定列的顺序

我的建议是通过单独维护的数据库脚本创建数据库(可能与脚本部署/迁移工具(例如Flyway)结合使用,也许还hbm2ddl.auto = VALIDATE可以检查结果模式是否与实体匹配)。一旦应用程序投入生产,通过脚本维护数据库就变得更加必要。

2020-06-20