我有以下实体:
@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
在我的架构中,我在表“my_entity”下有列“myField” 最大长度为255 CHAR
我希望 Hibernate 在服务器启动时验证失败 因为实体中定义的字段长度大于 在我的架构中定义。
这是一个错误吗? 有没有办法配置 Hibernate 来做到这一点?
最佳答案
Hibernate 文档说:
Automatically validates or exports schema DDL to the database when the SessionFactory is created
根据您使用 hibernate 的设置,SessionFactory 不是
必须在服务器启动时立即创建。例如。当您使用 Configuration().configure().buildSessionFactory(); 创建“自己的”SessionFactory 时;
编辑:看起来有点像是自 org.hibernate.mapping.Table.validateColumns 以来的 Hibernate bug仅检查列类型。
关于java - 服务器启动时的 hibernate 验证不检查列长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30863012/