mysql – hibernate生成错误的sql“从my_table中选择max(id)”

我用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")
点赞