我有一个 JPA/Hibernate 数据模型,我正在使用 Hibernate hbm2ddl 工具生成数据库 DDL。我在数据库中有一些应该是 CHAR 的字符串和一些可能是 VARCHAR 的字符串。我想尽量减少对 DDL 的手动编辑(我意识到有些必须发生)。
有人知道我应该怎么做吗?我意识到我可以通过黑客方言制作所有字符串 VARCHARS 或 CHARS,但这在数据库中并不总是合适的。
我希望能够使用注释或 aop 来做到这一点,避免在我的类中自定义列定义文本。
谢谢。
我有一个 JPA/Hibernate 数据模型,我正在使用 Hibernate hbm2ddl 工具生成数据库 DDL。我在数据库中有一些应该是 CHAR 的字符串和一些可能是 VARCHAR 的字符串。我想尽量减少对 DDL 的手动编辑(我意识到有些必须发生)。
有人知道我应该怎么做吗?我意识到我可以通过黑客方言制作所有字符串 VARCHARS 或 CHARS,但这在数据库中并不总是合适的。
我希望能够使用注释或 aop 来做到这一点,避免在我的类中自定义列定义文本。
谢谢。
用 .注释要映射到数据库中 CHAR 的字符串
@Column(columnDefinition="CHAR(<your-char-length>)")
。
所以,我终于发现可以在方言中为一个类型指定一个长度限制。所以,我决定长度小于 10 的任何东西都应该是 char,超过 10 的任何东西都应该是 varchar:
registerColumnType( Types.VARCHAR, 10, "char($l)" );
这不是我想要的,但这已经足够好了。可惜我没有早点发现。