JPA/休眠 DDL 生成;查尔 vs. 瓦尔查尔

我有一个JPA / Hibernate数据模型,我正在使用Hibernate hbm2ddl工具来生成数据库DDL。我有一些字符串应该是CHAR,有些可能是数据库中的VARCHAR。我想尽量减少对DDL的手动编辑(我意识到有些必须发生)。

有人知道我应该如何去做吗?我意识到我可以通过被黑客入侵的方言制作所有字符串VARCHARS或CHARS,但这并不总是适合数据库中的。

我希望能够使用注释或aop执行此操作,从而避免在我的类中自定义列定义文本。

谢谢。


答案 1

使用 为要映射到数据库中的 CHAR 的字符串添加批注。@Column(columnDefinition="CHAR(<your-char-length>)")


答案 2

所以,我终于发现你可以为方言中的类型指定长度限制。所以,我决定任何长度小于10的东西都应该是char,任何超过10的东西都应该是varchar:

registerColumnType( Types.VARCHAR, 10, "char($l)" );

这并不是我想要的,但这已经足够好了。可悲的是,我没有早点发现这一点。


推荐