6

Hibernate 3 と MySQL5.5 を使用しています。

私は休止状態の初心者であり、以下の例外が発生しています

Exception in thread "main" org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available
    at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:106)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:152)

hibernate.cfg.xml ファイルに Dialect プロパティを設定しました。いろいろ組み合わせてみました

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 
<property name="DIALECT">org.hibernate.dialect.MySQL5Dialect</property>

実際の物件名は?Hibernate.dialect または方言のみ ? 可能なプロパティ値は何ですか?

私はいくつかの情報を追加しています、私は使用しました

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

以下の回答で示唆されているように。

簡単な構成を作成しようとしているだけで、コードを作成していません。

Configuration cfg = new Configuration().addClass(Employee.class);
sessionFactory = cfg.buildSessionFactory();

以下は実際の構成ファイルです

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="connection.url">jdbc:mysql://localhost/test</property>
    <property name="connection.username">root</property>
    <property name="connection.password">root1234</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <property name="hbm2ddl.auto">create</property>
    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">1</property>
    <property name="current_session_context_class">thread</property>
    <!-- Mapping files will go here.... -->
  </session-factory>
</hibernate-configuration>

hibernate.cfg.xml が見つからないと思いますか? Employee.class のソース コードと同じパッケージに配置しました。実際、このファイルを移動すると同じエラーが発生するため、実際には見つかりません:-( どこに保管するのですか? これはスタンドアロンのテストプログラムです:-(

4

6 に答える 6

7

1行目または2行目のどちらかが機能するはずです。「方言」だけの 2 番目の方法は、Hibernate リファレンスに示されている方法です。それでもエラーが発生する場合は、何か他のことが起こっている可能性があります。SessionFactory をどのように構築していますか? hibernate.cfg.xml を見つけていますか?

編集:更新に基づいて、構成ファイルから構成するように Hibernate に指示していません。独自の構成を構築し、それを使用しています。どちらかを選択する必要があります。プログラムで行うか、XML経由で行います。

于 2011-07-25T16:12:44.050 に答える
5

私も同じ問題に直面していました以前の私のコードは次のとおりでした:

private final static SessionFactory factory = new Configuration()
        .configure().buildSessionFactory();

今私はそれを

private final static SessionFactory factory = new Configuration()
        .configure("hibernate.cfg.xml").buildSessionFactory();

エラーはなくなりました。デフォルトでは、hibernate.properties ファイルのみを検索すると思います。

于 2012-02-08T13:55:17.633 に答える
2

プロパティ名はhibernate.dialectです

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

MySQL5Dialectのようなものがあるかどうかはわかりません。

詳細については、ドキュメントを参照してください。

于 2011-07-25T16:16:10.040 に答える
0

私も同じエラーに直面しました - org.hibernate.HibernateException: The dialect was not set. プロパティ hibernate.dialect を設定します

cfg=cfg.configure(); と書くのを忘れていました。永続性クラスのインスタンスを作成している間。今は正常に動作しています。

Configuration cfg=new Configuration();
              cfg=cfg.configure();
        sfactory=cfg.buildSessionFactory();
于 2015-12-09T00:19:55.740 に答える
0

mi の場合、hibernate に関連する jar ライブラリを WEB-INF\lib に配置することでこれを解決しました。

于 2014-02-11T23:39:20.033 に答える