Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Hibernate会生成这个SQL查询?_Java_Mysql_Hibernate - Fatal编程技术网

Java 为什么Hibernate会生成这个SQL查询?

Java 为什么Hibernate会生成这个SQL查询?,java,mysql,hibernate,Java,Mysql,Hibernate,我正在使用Hibernate和MySql服务器。我使用多个数据库作为“名称空间”(例如,用户,事务,日志记录等) 因此,我将Hibernate配置为不连接到特定数据库: url=jdbc:mysql://127.0.0.1/ 表格所在的数据库通过目录属性在hbm文件中定义: <class name="com.myApp.entities.User" table="user" schema="" catalog="users"> ... 但是,当我尝试添加新记录时,Hibernate

我正在使用Hibernate和MySql服务器。我使用多个数据库作为“名称空间”(例如,
用户
事务
日志记录
等)

因此,我将Hibernate配置为不连接到特定数据库:

url=jdbc:mysql://127.0.0.1/

表格所在的数据库通过
目录
属性在hbm文件中定义:

<class name="com.myApp.entities.User" table="user" schema="" catalog="users"> ...
但是,当我尝试添加新记录时,Hibernate不再使用[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”?您是否将hibernate.dial属性设置为org.hibernate.dial.mysqldial?也许hibernate无法自动确定这一点……你看到了吗?
select max(id) from users.user