2
<hibernate-configuration>
<session-factory>  <property name="hibernate.connection.driver_class">

com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">

jdbc:mysql://localhost/products</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.connection.password"></property>
  <property name="hibernate.connection.pool_size">10</property>
  <property name="show_sql">true</property>
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <!-- Mapping files -->
  <mapping resource="prod.hbm.xml"/>
</session-factory>
</hibernate-configuration>

上記のXMLを休止状態の構成ファイルとして使用して、「Products」という名前のデータベースにデータを挿入しています。しかし、コンパイルエラーが表示されConnection cannot be null when 'hibernate.dialect' not set ます。修正する理由/方法がわかりません。先に進むためのアイデアを教えていただけますか?感謝しています。ありがとうございました。

[更新]

簡単なプロジェクトを作成して設定した手順を含める必要があると思います。それが原因である可能性があります。

私はすでにmysqlにDBとテーブルを持っていました。次に、空のJavaプロジェクトを作成し、ソースファイル(Java拡張機能)を追加してから、2つのxmlファイル(hibernate.cfg.xmlとprod.hbm.xml)を追加しました。それから私は走ることを期待してコンパイルしました。

これが、アプリケーションをJavaアプリケーションとして実行しようとした後にコマンドプロンプトから受け取ったメッセージです。

Jul 13, 2012 12:32:55 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
Jul 13, 2012 12:32:55 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.2.Final}
Jul 13, 2012 12:32:55 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Jul 13, 2012 12:32:55 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Jul 13, 2012 12:32:56 PM org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator initiateService
WARN: HHH000181: No appropriate connection provider encountered, assuming application will be supplying connections
Connection cannot be null when 'hibernate.dialect' not set
4

6 に答える 6

2

構成ファイルは問題なく、SessionFactoryの作成に使用するコードに問題があると思われます。彼らはHiberanate4でこれをいじくり回しており、それは計り知れない混乱を引き起こしました。

これは私のために働きます:

private static SessionFactory sessionFactory;

public static SessionFactory getSessionFactory()
{
   if (sessionFactory == null)
   {
      Configuration configuration = new Configuration();

      ServiceRegistry serviceRegistry = new
              ServiceRegistryBuilder().applySettings
              (configuration.configure().getProperties()).buildServiceRegistry();        

      sessionFactory = configuration.buildSessionFactory(serviceRegistry);
   }
   return sessionFactory;

}

私はあなたと同じエラーを抱えていました。serviceRegistryを定義するその醜いコード行にconfiguration.configure()への重要な呼び出しがないことに気づきました。

(ちなみに、hibernate.dialectに関するエラーは赤いニシンです。Hibernateがデータベースを見つけられない場合、方言を理解できず、根本的な問題ではなく方言について誤って文句を言います。)

于 2012-08-20T16:32:49.123 に答える
2

そのはず

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
于 2012-07-13T04:50:43.597 に答える
0

com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/Products root root 10 true
org.hibernate.dialect.MySQLDialect update

    <!-- Mapping files -->

    <mapping resource="prod.hbm.xml"/>
</session-factory>

注: 最初の行は非常に重要です。この doctype を確認してください。1 つのスペースでもエラーが発生します。パスワードが指定されている場合は、DB にパスワードがあることを確認してください。

于 2012-07-13T06:18:30.360 に答える
0

電話することを忘れないでくださいconfigure()

Configuration configuration = new Configuration();
configuration.configure();
于 2013-03-19T10:34:24.193 に答える