4

我用 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 ohejdbc.spi.SqlExceptionHelper - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以便在第 1 行的“my_table”附近使用正确的语法 [n/a]”

因为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

也无济于事。

这似乎是一个错误,但有什么解决方案?

4

2 回答 2

2

您确实需要为此发布带注释的实体/休眠 XML 映射。

最可能的原因是您没有在table annotation中指定 schema 属性。

即类似的东西

@Table(schema="some_db")
于 2012-09-14T08:56:42.107 回答
0

您可以使用架构参数:

<generator class="increment">
    <param name="schema">some_db</param>
</generator>
于 2017-04-29T13:04:00.063 回答