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

标签 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 然后书名。

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

有注释吗??

问候

最佳答案

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

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

关于java - 使用hibernate创建新表时如何维护列顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5964714/

相关文章:

java - 如何使用 Apache POI 和 Java 代码检查 Excel 文件中是否存在信息

android - 如何在 android 中打开 SQLite 数据库?

mysql - 在sql中存储多对多分层数据的最佳方式

java - Hibernate 别名 - 仍然执行 n+1 选择是否正常?

java - hibernate 和 MS sql server 的性能很慢

java - Devexpress ASPX PivotTable/Gride 之类的控件是否可用于 Java webapp?

java - 我想在 Java 中反转字符串并删除和复制

带有 Spring 参数的 Java Akka Actors

java - mybatis IllegalArgumentException : Mapped Statements collection does not contain value

java - 应用程序级锁定和 hibernate 乐观锁定