hibernate.hbm2ddl.auto的确切行为是什么;更新;冬眠?

hibernate.hbm2ddl.auto的确切行为是什么;更新;冬眠?,hibernate,Hibernate,hibernate.hbm2ddl.auto=“update”工作异常。任何数据库实体。。若数据库中并没有(数据库中的表和表中的列),将通过保持更新来创建。但如果我想更改任何现有的数据类型或任何列的大小,那么它就不起作用。通过这种方式,我形成了一种思维定势,即更新创造事物,但不更新。但当我试图添加一个约束(它不是空的)时,它又没有做任何事情。没有添加任何约束 请建议在我无法使用CREATE但仍希望更改任何列的数据类型或任何列的大小的情况下如何继续。 我查阅了许多文件和答案,但没有一个给出理由 我

hibernate.hbm2ddl.auto=“update”
工作异常。任何数据库实体。。若数据库中并没有(数据库中的表和表中的列),将通过保持更新来创建。但如果我想更改任何现有的数据类型或任何列的大小,那么它就不起作用。通过这种方式,我形成了一种思维定势,即更新创造事物,但不更新。但当我试图添加一个约束(它不是空的)时,它又没有做任何事情。没有添加任何约束

请建议在我无法使用CREATE但仍希望更改任何列的数据类型或任何列的大小的情况下如何继续。 我查阅了许多文件和答案,但没有一个给出理由

我正在使用hibernate 4.0.0和MySQL-5.6.12

提前谢谢

hibernate.hbm2ddl.auto="update"
只有在创建
SessionFactory
对象时,如果实体中的更改有效,则肯定会更新实体中的更改<代码>“创建”将在创建SessionFactory对象时创建新的数据库表

create - doing creating schema
update - updating existing schema
validate - validate existing schema
create-drop - create and drop the schema automatically when session is starts and ends.
update
将无法正确处理现有数据,因此不要在生产中使用update。因为有时会说更改数据类型可能无效。你可以参考


我的建议是:只需从数据库中备份数据,然后根据需要进行更改,如增加大小、更改数据类型(它应该与旧的兼容)。然后,最后将数据导入到新生成的数据库结构中。

使用
hibernate.hbm2ddl.auto=“update”

当表中已有数据时,不能添加新的NOTNULL约束


如果尝试使用nullable约束,可能会发生什么情况。

@mahesh。。。我的问题是,如果我想更改给定给特定对象的数据类型或大小,那么解决方案是什么?在我的例子中,我尝试通过更新执行相同的操作。但他们没有得到更新。创建是可以的,但它将删除旧数据,显然这是不可接受的。@Jay。。。我在一个空表上进行了尝试,因此不存在旧的现有数据的问题。NOTNULL约束只是一个示例,表示更新并没有添加附加约束。我想更改给定给特定列的数据类型或大小,那么解决方案是什么?显然我不能用CREATE。。。