質問

以前はHibernate 3.2とBoneCPを使用しましたが、私のJavaアプリケーションをOracleデータベースに接続するには、Hibernate 4.3.5とHikari Connection Poolにアップグレードしました。私はv $ session.programをプログラム名に設定し、それをHibernate設定に追加します。

Hibernateによって提供されるConfigurationクラスを拡張する独自のHibernate構成クラスを作成しました。

public class MyConfiguration extends Configuration {
    private static final long serialVersionUID = 1L;

    public MyConfiguration() { }

    public MyConfiguration(SettingsFactory settingsFactory) {
        super(settingsFactory);
    }

    @Override
    public SessionFactory buildSessionFactory() throws HibernateException {
        ServiceRegistry registry = new StandardServiceRegistryBuilder()
        .applySettings(getProperties()).build();
        return new MySessionFactory(super.buildSessionFactory(registry));
    }
}
.

MySessionFactoryは、SessionImplのPersistenceContextフィールドを介してMagicを実行するSessionFactoryのカスタムラッパーです(これも問題になるため、アップグレードの前に機能します)。

それから私は

を呼び出す
Document configDocument = loadHibernateConfigruationDocument();
MyConfiguration conf = new MyConfiguration();
conf.configure(configDocument);
conf.buildSessionFactory();
.

しかし私がデータベースに移動した場合(アプリケーションが実行されている間)とquery

SELECT MACHINE, PROGRAM, USERNAME, count(*) as COUNT FROM v$session GROUP BY MACHINE, PROGRAM, USERNAME;
.

私が始めたばかりのプログラムを見つけることができません。私が間違っていることはどんなアイデアですか?

役に立ちましたか?

解決

私は解決策を見つけました。私の設定とeverthingは、hibernate.hikari.dataSource.v$session.programand hibernate.hikari.dataSource.v$session.usernameを追加しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top