Java Hibernate:如何设置整型字段的长度

Java Hibernate:如何设置整型字段的长度,java,mysql,hibernate,Java,Mysql,Hibernate,我有一个由hibernate映射到MySQL数据库的实体,其中包含一些整数字段,例如: @Column(name = "BVE_YEAR", nullable = true, length = 4) private Integer year; 这些表是由Hibernate自动创建的(Hibernate.hbm2ddl.auto=create) 所有类型为Integer或int的字段都是以10的长度创建的,无论我在@列注释中指定了什么 如何设置列的长度(除了一些altertablescript)

我有一个由hibernate映射到MySQL数据库的实体,其中包含一些整数字段,例如:

@Column(name = "BVE_YEAR", nullable = true, length = 4)
private Integer year;
这些表是由Hibernate自动创建的(
Hibernate.hbm2ddl.auto=create

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

如何设置列的长度(除了一些
altertable
script)


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

我认为您可以使用
@列
注释以及
精度
比例
属性

length
属性仅影响字符串属性

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

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


如果确实要显式设置列宽,则必须使用
columnDefinition
并手动指定全部内容。有什么特别的原因让你想要一个更窄的列,而
@Min
对你来说就不那么清晰了吗?

正如chrylis所说,显示的长度并不重要。如果需要“较小”类型,可以在mysql中使用
TINYINT


我建议不要使用hibernate automatic创建生产数据库,而是使用SQL脚本

@nachokk不幸的是,它没有任何效果
columnDefinition
起作用,但它不是我想要的。(这是特定于数据库的)您所说的“是否有特定的原因需要一个更窄的列,而@Min不会更清晰?”是什么意思?为什么要将列宽限制为4?这对你有什么帮助?这个表将包含十亿个数据集,我不想浪费空间。你是问MySQL还是Hibernate?根据我引用的规范,在Hibernate中,它没有任何意义。对于MySQL,您尝试过@Min和@Max吗?我没有那个注释。我需要添加哪个maven软件包才能获得它们?我还不知道如何格式化commets以便可以很好地复制它,但这一个应该可以(没有环境在这台计算机上检查它,因此“应该”)谢谢,我获得了它们。但是它们对列长度没有影响。我没有在这里设置环境,而且我不想在不先测试它们的情况下编写任何建议,所以我将尝试在明天早上回到这里:)