省略映射类中属性的属性

时间:2014-06-26 12:22:30

标签: database hibernate jpa

是否必须指定此属性的所有属性

@Column(name = "ID_COMPANY", unique = true, nullable = false)

或只做:

@Column(name = "ID_COMPANY")

对于字符串,我们必须指定长度?

@Column(name = "NAME", length = 30)

或只是:

@Column(name = "NAME")

因为如果我在我的数据库中更改varchar的长度,我必须在我的映射类中再次更改它,如果我有很多更改,那就很难了。

2 个答案:

答案 0 :(得分:1)

不,这不是强制性的。

只有在使用Hibernate生成数据库模式时,才会使用name以外的大多数选项。如果手动维护架构,则可以安全地省略它们。

但是,其中一些(例如nullableunique)可能对文档有用。

答案 1 :(得分:1)

@Column注释的所有元素都有默认值。除非您的架构违反了可空性,唯一性,长度等的默认值(或者您的数据库列与您的字段名称不完全匹配),否则您可以将它们从注释中移除以防止混乱。

默认值可以在JavaDoc上看到:http://docs.oracle.com/javaee/7/api/javax/persistence/Column.html