我正在使用 Hibernate 和 MySql 服务器。我使用多个数据库作为“命名空间”(例如users
,transactions
等logging
)。
因此,我将 Hibernate 配置为不连接到特定数据库:
url = jdbc:mysql://127.0.0.1/
表所在的数据库在 hbm 文件中通过catalog
属性定义:
<class name="com.myApp.entities.User" table="user" schema="" catalog="users"> ...
当我想加载一些数据时,一切正常,Hibernate 似乎生成了预期的 SQL 查询(通过使用表名中的目录前缀),例如:
select id from users.user
但是,当我尝试添加新记录时,Hibernate 不再使用该from [catalog].[table_name]
语法。所以我收到一个 MySQL 错误“未选择数据库”。
select max(id) from user
Hibernate 正在尝试获取未来 id 以创建新记录,但它没有指定表位于哪个数据库中,它应该是:
select max(id) from users.user
为什么 Hibernate 会生成这个无效查询?有人遇到过这个问题吗?