Spring   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java – 强制Hibernate在删除和重新创建数据库后创建表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用java 2 ee开发一个Web应用程序.我也使用hibernate和MysqL.@H_801_2@为了恢复备份文件,在我的应用程序的某些时候我需要删除当前数据库并重新创建它,我按如下方式执行:

    Connection conn = (Connection) DriveRMANager.getConnection("jdbc:MysqL://localhost/?user=user&password=pass");
    Statement statement = (Statement) conn.createStatement();
    statement.executeupdate("DROP DATABASE tcs;");
    statement.executeupdate("CREATE DATABASE tcs charset=utf8 collate=utf8_persian_ci;");

删除并重新创建后我需要使用用户初始化数据库(spring security user)

    User admin = new User();
    UserAuthority ROLE_USER = new UserAuthority("ROLE_USER");
    ROLE_USER.save();
    admin.addUserAuthority(ROLE_USER);
    admin.setEnabled(true);

    admin.save();

但在最后一行应用程序抛出此异常

Hibernate: insert into roles (authority) VALUES (?)
[DEBUG][16:19:17,734] [http-bio-8080-exec-10] NewPooledConnection:367  com.mchange.v2.c3p0.impl.NewPooledConnection@bcbe33a handling a throwable.
com.MysqL.jdbc.exceptions.jdbc4.MysqLSyntaxErrorException: Table 'tcs.roles' doesn't exist

我知道hibernate在启动时会创建表,但在这种情况下,它无法在删除/重新创建后重新创建表,那么我如何强制hibernate再次创建表?@H_801_2@或假设有类似Hibernate.createTable(Class)的东西?

最佳答案
您需要将以下属性添加到配置中:

每次创建和销毁SessionFactory时删除并重新创建:

其他可能的选择:

> validate:验证架构,不对数据库进行任何更改.@H_801_2@> update:更新架构.@H_801_2@> create:创建架构,销毁以前的数据.

大佬总结

以上是大佬教程为你收集整理的java – 强制Hibernate在删除和重新创建数据库后创建表全部内容,希望文章能够帮你解决java – 强制Hibernate在删除和重新创建数据库后创建表所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。