【问题标题】:Hibernate tries to insert data to a table that does not existHibernate 尝试将数据插入到不存在的表中
【发布时间】:2018-11-30 16:05:12
【问题描述】:

我有一个关于电影和演员的数据库。我想做的是: 我想从相应的 arrayLists 中获取演员数据(如姓名、姓氏、国家、出生日期)并将该数据插入到我的演员表中。我想对我的电影桌做同样的事情。这是我的代码的一部分:

然后我收到这些错误:

  • 线程“主”javax.persistence.RollbackException 中的异常:提交事务时出错

    -Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: 无法执行语句

    -Caused by: org.hibernate.exception.SQLGrammarException: 无法执行语句

    -原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表'movies and tv series.actor_country'不存在

我不明白的是为什么 hibernate 会尝试将数据插入到不存在的表中。我不想要一个 actor_country 表。有人可以帮帮我吗?

我创建了一个无参数构造函数并用一些数据初始化 arrayLists。

【问题讨论】:

  • 我们需要查看您的实体的定义。您是否使用@Table 注释来命名您的表?如果没有,Hibernate 将使用你的类名来解决这个问题。
  • @JasonArmstrong 我已经更新了我的问题。

标签: java mysql database hibernate jdbc


【解决方案1】:

不幸的是,在您当前的设计中,您遇到了actor_country 表。将属性定义为@ElementCollection 类型的List 将创建一个子表。 您将如何在关系数据库中存储多个国家/地区?您可以通过将@CollectionTable@ElementCollection 结合使用来控制表的名称。

如果您不想存储多个国家/地区,可以将其切换为@Basic,类型为String

【讨论】:

  • 那么没有子类就没有办法存储多个国家?
  • 子类不是问题。就是你需要一个表来存储它们。如果你想在数据库中存储多个项目,你将每个项目存储为一条记录。在 RDBMS 中你会怎么做呢?如果你使用 NoSQL,那就完全不同了。
  • 非常感谢
猜你喜欢
  • 2021-05-14
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多