5
我正在使用Hibernate和MySql服务器。我使用多个数据库作为“命名空间”(例如users
,transactions
,logging
等)。为什么Hibernate生成这个SQL查询?
所以,我configued 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的生成这个无效的查询?有人遇到过这个问题吗?
你使用的是什么版本的hibernate? –
我正在使用Hibernate-4.2.2 –
如果您使用:schema =“users”catalog =“users”,会发生什么情况? – Rafa