限制hibernate在生成ddl时不识别验证注解

zsbz8rwp  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(379)

我一直在用 hbm2ddl=update 到目前为止都是数据库创建。但现在我们要移除 hbm2ddl 性质和用途 SchemaExport hibernate的工具,用于创建基于hibernate注解模型类的sql语句。schemaexport现在也完成了。
但是当我通过使用确保hibernate生成的数据库和schemeexport生成的schemasql是相同的 mysqldiff 在两个数据库(hibernate-generated和schemaexport-generated)上,很少有不具有相同类型约束的列。
假设采用以下模型

public class User {

    @Id
    // some generation strategy
    private int id;

    @Column(name = "first_name")
    @NotNull
    private String firstName;

    @Column(name = "someField", length = 50)
    @Size(min = 3, max = 20)
    private String someField;

}

hibernate生成的表具有以下列约束。

`first_name` varchar(255) NOT NULL,
`someField` varchar(20) DEFAULT NULL

schemeexport生成的架构具有以下结构。

`first_name` varchar(255) DEFAULT NULL,
`someField` varchar(50) DEFAULT NULL

所以很明显,hibernate生成数据库在ddl生成过程中也考虑了bean验证( wrong )而schemaexport只考虑与数据库相关的注解( right ).
我知道使用 max = {x} 但是定义 length = >max 是相当无用的(同样适用于 @NotNull & nullable = true -> default ),但我的观点是验证注解应该只用于验证,而数据库相关注解应该只用于ddl生成,对吗。。?我有没有办法告诉hibernate在ddl生成过程中不要考虑验证注解。。?
我正在使用以下版本的库

Hibernate 4.2.7
Spring 4.1.4 (Java based Bean configs, no hibernate.cfg.xml)

类似的问题,但需求正好相反。我找不到一个合适的/可解释的答案来解释为什么ddl生成能够识别它,而schemaexport工具却不能,或者至少相反。
为什么hibernate工具hbm2ddl生成没有考虑bean验证注解?

iecba09b

iecba09b1#

通过将属性\u hibernate.validator.apply \u to \u ddl设置为false,可以禁用对ddl应用bean验证约束。

相关问题