当前位置: 首页 > 知识库问答 >
问题:

HIbernate不会创建已经存在于另一个数据库中的表

耿招
2023-03-14

我有一个名为com.test.学生的bean实体,它使用xml映射到考勤数据库中名为“学生”的表。考勤数据库中的“学生”表还不存在。

尽管属性hibernate.hbm2dll.auto被设置为“更新”,HiberNate并没有在应用程序启动时在考勤数据库上创建“学生”表。它也没有生成任何异常、警告或查询。它根本不做任何事情。

经过一些测试,我意识到在另一个名为“sms”的数据库中已经存在一个student表。如果我映射com。测验将Student@实体转换为另一个表名(在任何数据库中都不存在),Hibernate将使用此配置创建它。

为什么HiberNate没有在映射的数据库上创建“学生”表?在另一个数据库中存在另一个同名表是否以某种方式干扰?

一些信息:

  • 冬眠版本:4.3.9
  • Spring版本:4.3.9
  • MySQL作为数据库
  • Java 8
  • 把上网本放在一边

共有1个答案

班景龙
2023-03-14

如注释部分所述,如果由于模式之间的表名冲突,Hibernate没有在ddl自动上创建表,您应该显式声明:

@Table(name="attendance.student")

这样hibernate将正确地创建表。如果没有显式声明任何模式,它将公开查找具有相同名称的其他表,因此不会创建新表。

看看这个错误描述。如果你想知道更多关于hibernate在创建新表时的行为的细节,你应该用一个更简洁的场景创建另一篇文章,这样我们可以进一步讨论它。

 类似资料:
  • 问题内容: 我有一个基本的Hibernate代码,我将属性“ hibernate.hbm2ddl.auto”设置为更新,因为它仍然无法在数据库中自动创建表。 这些是必需的文件: employee.hbm.xml liability.hbm.xml hibernate.cfg.xml 这是我尝试运行的Main.java: 这是我得到的错误: com.mysql.jdbc.exceptions.jdb

  • 问题内容: 我正在使用,并且正在尝试运行一个简单的应用程序,尤其是运行在page中描述的应用程序。我的hibernate.cfg.xml文件是: 我(使用maven时)是: 我在链接中使用它: 但是,不可能获得应用程序的工作,即在数据库中hibernate创建表并插入值。无论尝试如何,我总是会收到相同的错误: 在线上的“关系部门不存在”: 我也没有完全相同的错误尝试过。为了抢占某些读者,请不要在数

  • 你知道吗?也许有更好的办法?

  • 使用H2, 如果数据库还不存在,则创建它。 但是,在Postgres中,不会创建不存在的数据库,因此会引发类似“DB不存在”的异常。有没有办法配置Postgres以按需创建不存在的数据库? 以下配置文件可用于重现此问题: 使用H2工作正常: 使用Postgres失败

  • 我有两个pyspark数据帧 DF1 : df2: 我想向df1添加一个列Location_Id,从df2获取匹配的Id,如下所示: 我如何才能做到这一点?

  • 问题内容: 是否可以使用其他数据库中的SELECT创建表(在我的开发数据库中)? 我想要类似的东西: 有没有执行此操作的语法,还是我需要首先创建一个数据库链接? 问题答案: 您必须首先创建一个数据链接 。 除非创建数据库链接,否则Oracle无法查询其他数据库。如前所述,如果存在数据库链接,则必须执行以下操作: