没有连接可用错误时,必须设置'hibernate.dialect'

sta*_*tar 12 java hibernate

使用Hibernate时出现以下错误:

'hibernate.dialect' must be set when no Connection available

我正在使用数据源进行数据库连接.

emu*_*ano 10

问题可能是您没有为要连接的数据库安装客户端库.

我有一个没有persistence.xml文件的Spring应用程序,因此没有hibernate.dialect声明.

一旦我安装了MySQL Connector/J客户端库,错误便消失了.

编辑:当数据库服务器没有运行时,我也遇到了这个错误.现在经常发生的事情是我通过MAMP运行我的MySQL服务器.


New*_*ser 6

即使您的配置文件具有适当的值但您没有在代码中配置它,您也会遇到此问题.

我在解释hibernate,我configure()以前忘了使用,buildSessionFactory()所以我得到了错误.

您可能想要重新检查它.

以前的代码给了我错误

SessionFactory factory = new Configuration().buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

更改的代码 无错误

SessionFactory factory = new Configuration().configure().buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)


Aki*_*ile 5

这个错误是hibernate在告诉你尝试连接数据库时出了什么问题.

就我而言,它就像配置文件中的密码错误一样简单.


Art*_*lpe 4

您需要设置属性

hibernate.dialect
Run Code Online (Sandbox Code Playgroud)

在 hibernate(persistence.xml 或 bean 声明)配置中,该值取决于您的数据库,例如:

Postgres: org.hibernate.dialect.PostgreSQL82Dialect
Oracle: org.hibernate.dialect.Oracle10gDialect
Run Code Online (Sandbox Code Playgroud)

所有可能的选项都在这里

例如,示例 persistence.xml 如下所示:

<persistence-unit>
    ...
    <properties>
        ...
        <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
        ...
    </properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)

  • 这并不完全正确。如果您知道 Hibernate 不会自动检测方言,或者您想使用自定义方言,则需要设置方言。但在大多数情况下,它应该是自动检测到的,因此,您不需要设置它。此消息通常表明存在其他问题。 (2认同)