使用 Hibernate 时出现以下错误:
'hibernate.dialect' must be set when no Connection available
我正在使用数据源进行数据库连接。
问题可能是您没有为您尝试连接的数据库安装客户端库。
我有一个没有 persistence.xml 文件的 Spring 应用程序,因此没有 hibernate.dialect 声明。
一旦我安装了MySQL 连接器/J客户端库,错误就消失了。
编辑:当数据库服务器未运行时,我也收到此错误。现在我通过 MAMP 运行我的 MySQL 服务器时经常发生的事情。
即使您的配置文件具有正确的值,但您没有在代码中配置它,您也会遇到此问题。
configure()
我在解释休眠,我之前忘记使用了,buildSessionFactory()
所以我得到了错误。
您可能需要重新检查它。
以前给我错误的代码
SessionFactory factory = new Configuration().buildSessionFactory();
更改代码 没有错误
SessionFactory factory = new Configuration().configure().buildSessionFactory();
这个错误是休眠在告诉您尝试与数据库连接时出了什么问题的糟糕工作。
就我而言,这就像在配置文件中输入错误的密码一样简单。
您需要设置属性
hibernate.dialect
在 hibernate(persistence.xml 或 bean 声明)配置中,该值取决于您的数据库,例如:
Postgres: org.hibernate.dialect.PostgreSQL82Dialect
Oracle: org.hibernate.dialect.Oracle10gDialect
所有可能的选项都在这里听
例如,一个示例 persistence.xml 如下所示:
<persistence-unit>
...
<properties>
...
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
...
</properties>
</persistence-unit>
刚遇到这个问题。在我的情况下,它是hibernate.dialect配置。我将以下内容添加到 Spring 上下文文件中的 SessionFatcory 配置中:
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="annotatedClasses">
<list>
<value>com.testapp.service.geolocation.LocationData</value>
<value>com.testapp.service.profiles.Profile</value>
</list>
</property>
<property name="hibernateProperties">
<value>hibernate.dialect=org.hibernate.dialect.HSQLDialect</value>
</property>
</bean>
在某些情况下,只是为数据库使用错误的名称会导致此异常。Hibernate 显然是在做任何其他事情之前尝试确定方言,并且由于无法访问数据库,错误消息来自负责方言选择的部分。部分 Hibernate 出现错误消息。
我也有这个问题。原因是定义中缺少<property name="dataSource" ref="dataSource" />
元素<bean id="sessionFactory">
。
在 Hibernate 配置对话框中有一个选项卡“选项”可以选择一些。在这种情况下,我使用的是Oracle Enterprise Pack for Eclipse,它已经配置了连接器,但仍然出现错误。在列表中选择一个选项就足够解决了。
我有同样的错误。我的问题是我把hibernate.properties
下面的package
而不是src
. 所以我对我的问题的解决方案是hibernate.properties
从.package
src