3

我有一个由休眠映射到具有一些整数字段的 MySQL 数据库的实体,例如:

@Column(name = "BVE_YEAR", nullable = true, length = 4)
private Integer year;

这些表由 Hibernate ( hibernate.hbm2ddl.auto=create)自动创建

无论我在注释中指定什么,所有类型为Integeror的字段都以 10 的长度创建。int@Column

如何设置列的长度(某些ALTER TABLE脚本除外)?

提前感谢您的任何帮助和想法

4

3 回答 3

3

就像 chrylis 所说,显示的长度并不重要。如果你需要一个“更小”的类型,你可以TINYINT在 mysql 中使用。

我建议不要使用一些休眠自动创建生产数据库,而是使用一些 SQL 脚本。

于 2013-08-14T20:38:23.717 回答
1

我认为您可以将@Column注释与precisionscale属性一起使用。

length属性仅影响字符串属性。

您可以在第 2.2.2.3 章中找到更多信息,即此处。声明列属性。

如果它不起作用,您可以尝试@Min使用@Maxhibernate@Range验证器的注释。

于 2013-08-04T21:30:19.507 回答
1

(可选)列长度。(仅在使用字符串值列时适用。)

如果您真的想明确设置列宽,则必须使用columnDefinition并手动指定整个内容。是否有特定原因需要更窄的列而@Min不是更清晰?

于 2013-08-04T21:30:20.003 回答