首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >限制Hibernate不识别DDL生成中的验证注释

限制Hibernate不识别DDL生成中的验证注释
EN

Stack Overflow用户
提问于 2016-03-28 10:03:25
回答 1查看 603关注 0票数 1

到目前为止,我一直在使用hbm2ddl=update来创建数据库。但是现在,我们将删除hbm2ddl属性,并使用Hibernate的SchemaExport工具创建基于Hibernate注释模型类的sql语句。SchemaExport现在也完成了。

但是,当我在两个数据库(hibernate生成和SchemeExport生成)上使用mysqldiff工具确保hibernate生成的数据库和SchemaExport生成的模式sql是相同的时,很少有列没有相同的约束。

假设采用以下模型

代码语言:javascript
运行
复制
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生成的表具有以下列约束。

代码语言:javascript
运行
复制
`first_name` varchar(255) NOT NULL,
`someField` varchar(20) DEFAULT NULL

SchemeExport生成的架构具有以下构造。

代码语言:javascript
运行
复制
`first_name` varchar(255) DEFAULT NULL,
`someField` varchar(50) DEFAULT NULL

因此很明显,Hibernate生成数据库在ddl生成(wrong)期间也会考虑bean验证,而SchemaExport只考虑数据库相关注释(right)。

我知道使用max = {x}限制列值,但是定义length = >max是无用的( @NotNullnullable = true -> default也是如此),但我的观点是,验证注释应该只用于验证,而与数据库相关的注释应该只用于ddl生成,对吗?有没有办法让hibernate在ddl生成过程中不考虑验证注释?

我正在使用以下版本的库

代码语言:javascript
运行
复制
Hibernate 4.2.7
Spring 4.1.4 (Java based Bean configs, no hibernate.cfg.xml)

类似的问题,但有着完全相反的需要。对于ddl生成为什么识别它,我找不到合适的/可解释的答案,而不是SchemaExport工具,或者至少相反。

Why does Hibernate Tools hbm2ddl generation not take into account Bean Validation annotations?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-29 09:06:07

通过将属性_hibernate.validator.apply_to_ddl_设置为false,可以禁用Bean验证约束到DDL的应用程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36260033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档