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

时间:2011-05-11 13:04:03

标签: java database 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代码中编写的顺序相同的顺序创建列?

是否有任何注释?

问候

1 个答案:

答案 0 :(得分:7)

假设您的意思是数据库表是通过hbm2ddl.auto生成的CREATE或类似的,there is no way to specify the order of the columns 生成的,至少在2008年,根据Hibernate团队的一名成员< / em>的

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