Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate模式更新什么也不做_Java_Database_Hibernate_Jdbc - Fatal编程技术网

Java Hibernate模式更新什么也不做

Java Hibernate模式更新什么也不做,java,database,hibernate,jdbc,Java,Database,Hibernate,Jdbc,我正在使用Hibernate开发一个MySQL数据库。如果我将hbm2ddl.auto设置为create`,则所有当前表都将被删除并正确重新创建,但如果我将其设置为“update”,则它不会对数据库执行任何操作,尽管会向控制台报告以下行: INFO: HHH000228: Running hbm2ddl schema update 作为参考,我用于设置数据库的代码是: final StandardServiceRegistry registry = new StandardServiceReg

我正在使用Hibernate开发一个MySQL数据库。如果我将
hbm2ddl.auto设置为
create`,则所有当前表都将被删除并正确重新创建,但如果我将其设置为“update”,则它不会对数据库执行任何操作,尽管会向控制台报告以下行:

INFO: HHH000228: Running hbm2ddl schema update
作为参考,我用于设置数据库的代码是:

final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
            .configure()
            .build();
而我的
cfg.xml
文件如下所示:


com.mysql.jdbc.Driver
jdbc:mysql://127.0.0.1:3306/testdatabase
xxxxxxxx
xxxxxxxx
1.
org.hibernate.dialogue.mysqldialogue
org.hibernate.cache.internal.NoCacheProvider
真的
更新
显然,由于
create
正在工作,我认为没有必要显示带注释的类

编辑:


我期望发生的更改基本上是将数据库列类型更正为正确的类型。在运行更新之前,我将MySql中的列类型更改为与带注释的模式不同的类型,但在更新时,它并没有像预期的那样更正它。与此相反,当我完全删除表时,更新确实起了作用,但似乎更新的功能不如预期的充分?

Service registry需要配置中的一些属性。因为您使用的是hibernate配置文件的非标准名称/位置

final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
    .configure("cfg.xml")
    .build();

服务注册表需要配置中的某些属性。因为您使用的是hibernate配置文件的非标准名称/位置

final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
    .configure("cfg.xml")
    .build();

你期望的结果是什么?如果所有表都存在且未更改,则更新将不起任何作用,请尝试删除所有表并使用
update
运行应用程序。我认为它将创建表。我正在检查更新是否将列类型更改为正确的列类型。因此,在运行更新之前,我将mysql中的列类型更改为与带注释的模式不同的类型,但在更新时,它并没有按照预期进行更正。只是为了验证我是否按照您所说的那样完全删除了表,并且它起到了作用,所以更新的功能似乎没有预期的那么全面?我对这个问题进行了搜索,看起来hibernate只会向数据库中添加新列,当它们被添加到您的实体类中时,请检查这个问题(查看第一个答案)谢谢,这似乎可以解释它。您期望的结果是什么?如果所有表都存在且未更改,则更新将不起任何作用,请尝试删除所有表并使用
update
运行应用程序。我认为它将创建表。我正在检查更新是否将列类型更改为正确的列类型。因此,在运行更新之前,我将mysql中的列类型更改为与带注释的模式不同的类型,但在更新时,它并没有按照预期进行更正。只是为了验证我是否按照您所说的那样完全删除了表,并且它起到了作用,所以更新的功能似乎没有预期的那么全面?我对这个问题进行了搜索,看起来hibernate只会向数据库中添加新列,当它们被添加到实体类中时,检查这个问题(查看第一个答案)谢谢,这似乎可以解释它。