4

私がこれまでに見つけたものによると、私は次のコードを使用することができます:

    LocalSessionFactoryBean sessionFactory =(LocalSessionFactoryBean)super.getApplicationContext()。getBean( "&sessionFactory");
    System.out.println(sessionFactory.getConfiguration()。buildSettings()。getJdbcBatchSize());

しかし、その後、Hibernate例外が発生します。

org.hibernate.HibernateException:構成用のローカルデータソースが見つかりません-dataSourceプロパティをLocalSessionFactoryBeanに設定する必要があります

誰かが光を当てることができますか?

4

2 に答える 2

4

私が確認した Hibernate のバージョンでは、getConfiguration は SessionFactory のパブリック メソッドではありません。いくつかの絶望的なケースでは、公開されていない値を取得するために、Session または SessionFactory をその基になる実装にキャストしました。この場合、次のようになります。

((SessionFactoryImplementor)sessionFactory).getSettings().getJdbcBatchSize()

もちろん、実装を変更すると壊れる可能性があるため、危険です。私は通常、これがなくても生きていける最適化のためにのみこれを行い、失敗した場合に何も害を及ぼさないことを確認するために、すべてを try/catch Throwable ブロックにラップします。Hibernate を初期化するときに自分で値を設定することをお勧めします。これにより、最初からそれが何であるかがわかります。

于 2008-09-20T06:15:37.127 に答える
3

次のことを試してください (Spring を使用していないため、テストできません)。

System.out.println(sessionFactory.getConfiguration().getProperty("hibernate.jdbc.batch_size"))
于 2008-09-19T22:34:55.550 に答える