我用Hibernate做了很少的应用程序.只是从HB网站提供的样本.
Hibernate对DB说:
drop table if exists some_db.my_table
create table some_db.my_table ......
select max(id) from my_table
当我从HSQL db转向MySQL.
我有错误
“DEBUG o.h.e.jdbc.spi.SqlExceptionHelper – 您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以便在第1行[n / a]的’my_table’附近使用正确的语法”
因为HB顽固地试图说
select max(id) from my_table
代替
select max(id) from some_db.my_table
这是正确的语法
public void testBasicUsage() {
// create a couple of events...
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save( new Event( ..... ) ); // <<-------------------HERE
session.save(new Event( ..... ));
session.getTransaction().commit();
session.close();
改变方言并没有帮助.
例如,我试图切换到不同的hb版本
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.6.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
但它也没有帮助.
改变连接(标准的“root”/“”访问)就像
jdbc:mysql://localhost:3306/some_db
代替
jdbc:mysql://localhost:3306
也没有帮助.
它似乎是一个错误,但什么是解决方案?
最佳答案 你真的需要为此发布带注释的实体/ hibernate XML映射.
最可能的原因是您没有在table annotation中指定schema属性.
即一些东西
@Table(schema="some_db")