我有一个JPA / Hibernate数据模型,我使用Hibernate hbm2ddl工具生成数据库DDL。我有一些字符串应该是CHAR,一些字符串可能是数据库中的VARCHAR。我想尽量减少DDL的手动编辑(我意识到有些必须发生)。
任何人都知道我应该怎么做?我意识到我可以通过被黑客攻击的方言制作所有的Strings VARCHARS或CHARS,但这并不是数据库中总是适用的。
我希望能够使用注释或aop执行此操作,避免在我的类中使用自定义列定义文本。
感谢。
答案 0 :(得分:13)
使用,在数据库中注释要映射到CHAR的字符串
@Column(columnDefinition="CHAR(<your-char-length>)")
。
答案 1 :(得分:4)
所以,我终于发现你可以为方言中的类型指定一个长度限制。所以,我已经决定长度为10的任何东西都应该是char,而且任何东西都应该是varchar:
registerColumnType( Types.VARCHAR, 10, "char($l)" );
这不是我想要的,但这已经足够了。很遗憾,我之前没有找到。