服务器启动时的hibernate验证不检查列长度

时间:2015-06-16 08:58:11

标签: java hibernate

我有以下实体:

@Entity
@Table(name = "my_entity")
public class MyEntity {

    @Column(columnDefinition = "VARCHAR(2000)")
    private String myField;

    public String getMyField() {
        return myField;
    }

    public void setMyField(String myField) {
        this.myField = myField;
    }
}

我配置了Hibernate来对我的架构进行验证:

hibernate.hbm2ddl.auto=validate

在我的架构中,我有列" myField"在表格" my_entity" 最大长度 255 CHAR

我希望Hibernate在服务器启动时验证失败 因为实体中定义的字段长度大于 在我的架构中定义。

这是一个错误吗? 有没有办法配置Hibernate来做呢?

1 个答案:

答案 0 :(得分:2)

Hibernate文档说:

  

自动验证或将架构DDL导出到数据库时   SessionFactory已创建

根据您使用休眠的设置,SessionFactory不是 在服务器启动时立即创建。例如。当您使用Configuration().configure().buildSessionFactory();

创建SessionFactory'拥有自己的'时

编辑:看起来有点像Hibernate错误,因为org.hibernate.mapping.Table.validateColumns只会检查列类型。