使用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代码中编写的相同顺序的列?
是否有任何注释?
问候
假设您的意思是数据库表是通过将hbm2ddl.auto
设置为CREATE
或类似的方式生成的 ,那么根据Hibernate团队的一名成员,至少在2008年 无法指定列的顺序 。
我的建议是通过单独维护的数据库脚本创建数据库(可能与诸如hbm2ddl.auto = VALIDATE
类的脚本部署/迁移工具结合使用,也可能与hbm2ddl.auto = VALIDATE
一起检查生成的模式与实体匹配)。 一旦应用程序投入生产,通过脚本维护数据库变得更加必要。
- java.math.BigInteger无法强制转换为java.lang.Long
- NoClassDefFoundError:org / hibernate / annotations / common / reflection / MetadataProvider
- Hibernate本机查询:无效的列名错误SQL-17006
- 如何在hibernate中阻止SQL注入?
- 在OneToMany注释列表中重复
- 如何使用Hibernate和Spring Boot正确处理空结果集
- Hibernate @OneToMany抛出MySQLSyntaxErrorException:您的SQL语法中有错误
- @ManyToOne和@BatchSize
- JPA复合键+序列