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

时间:2013-09-10 11:19:39

标签: java hibernate

使用Hibernate时出现以下错误:

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

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

9 个答案:

答案 0 :(得分:10)

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

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

安装MySQL Connector/J客户端库后,错误就消失了。

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

答案 1 :(得分:6)

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

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

您可能需要重新检查它。

以前给我错误的代码

SessionFactory factory = new Configuration().buildSessionFactory();

更改了代码 无错误

SessionFactory factory = new Configuration().configure().buildSessionFactory();

答案 2 :(得分:5)

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

在我的情况下,它就像配置文件中的密码错误一样简单。

答案 3 :(得分:4)

您需要设置属性

hibernate.dialect

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

Postgres: org.hibernate.dialect.PostgreSQL82Dialect
Oracle: org.hibernate.dialect.Oracle10gDialect

所有可能的选项都是听here

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

<persistence-unit>
    ...
    <properties>
        ...
        <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
        ...
    </properties>
</persistence-unit>

答案 4 :(得分:2)

刚遇到这个问题。在我的例子中,它是 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>

答案 5 :(得分:1)

我也有这个问题。原因是<property name="dataSource" ref="dataSource" />定义中缺少<bean id="sessionFactory">元素。

答案 6 :(得分:1)

在某些情况下,只为数据库使用错误的名称会导致此异常。在做其他事情之前,Hibernate显然试图确定方言,并且由于无法访问DB,因此错误消息来自负责方言选择的部分。 Hibernate的一部分错误消息。

答案 7 :(得分:1)

在Hibernate配置对话框中有一个选项卡&#34; 选项&#34;可以选择一些。 在这种情况下,我使用已经配置了连接器的 Oracle Enterprise Pack for Eclipse ,但仍然收到错误。选择列表中的选项就足以解决。

答案 8 :(得分:1)

我有同样的错误。 但我的问题是我把hibernate.properties放在一个包而不是src下。 所以我解决我的问题的方法是将hibernate.properties从包转移到src。