JPA / Hibernate DDL生成; CHAR与VARCHAR

时间:2010-02-18 17:27:21

标签: java database hibernate jpa hibernate-annotations

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

任何人都知道我应该怎么做?我意识到我可以通过被黑客攻击的方言制作所有的Strings VARCHARS或CHARS,但这并不是数据库中总是适用的。

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

感谢。

2 个答案:

答案 0 :(得分:13)

使用,在数据库中注释要映射到CHAR的字符串 @Column(columnDefinition="CHAR(<your-char-length>)")

答案 1 :(得分:4)

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

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

这不是我想要的,但这已经足够了。很遗憾,我之前没有找到。