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

标签 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

在我的架构中,我在表“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/

相关文章:

java - DataTorrent/Apache Apex 与 sbt

java - Maven 找不到存储库中已存在的 Artifact

java - 出现错误 java.lang.ClassCastException : java. lang.String 无法转换为 [Ljava.lang.Object;

hibernate - Grails-java.lang.IllegalStateException:无法初始化代理

java - actor 中的 Libgdx 处理输入

java - onClick Sign Up 方法包含 onClick Datepicker,如何使其工作?

java - 基于 boolean 值返回信用卡的设计模式

java - Java的排序算法是什么

java - 在分层 Spring MVC Web 应用程序中处理 Hibernate session 的最佳方式

java - 制作一个 "TransactionAction"内部类