【问题标题】:Hibernate save SQL exceptionHibernate 保存 SQL 异常
【发布时间】:2014-07-17 22:14:19
【问题描述】:

大家好,我正在尝试通过 Hibernate 将对象保存到 MySQL 数据库。如果我执行以下代码

 User user = new User();
     user.setData_1("my data 5");
     user.setFirstname("Freddy");
     user.setLastname("Bob");
     user.setId(5);
     session.save(user);
     session.getTransaction().commit();

我得到一个

'com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 表'xxx.my_table_1'不存在'

异常。但是,使用相同的配置从同一个表中查询就可以了。

可能是什么问题?

【问题讨论】:

  • 如果您的连接告诉您一个表不存在,那么显然它能够访问您的服务器并且服务器响应它没有该名称的表。当你说你从同一个表中查询时,你是什么意思?
  • 我的意思是我可以发送一个查询,从中调用 .list(),它会返回一个对象列表。
  • 另外,如果我执行与查询相同的查询 q = session.createSQLQuery("INSERT INTO my_table_1 VALUES('DATA 5', 'Freddy', 'Bob', 5)"); q.executeUpdate();它也可以正常工作。

标签: java mysql sql hibernate


【解决方案1】:

检查配置中的连接字符串,例如hibernate.connection.url = jdbc:postgresql://localhost/mydatabase 您可能在 url(mydatabase) 中缺少架构名称。

【讨论】:

    【解决方案2】:

    所以,经过反复试验,我发现 .get() (显然也是 .save() )的问题是我没有在配置中设置 hibernate.default_schema。看起来它用于为 .save() 和 .get() 创建“动态”SQL,但如果您使用 .createSQLQuery(),它只会使用您传递的任何字符串作为 SQL 的参数,因此可以工作无需设置 hibernate.default_schema。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 2015-07-02
      • 2020-07-22
      • 2016-02-13
      • 2019-07-11
      • 2018-10-22
      相关资源
      最近更新 更多