2014-06-05 95 views
0

我以前使用hibernate 3.2和boneCP,但是我剛剛升級到hibernate 4.3.5和Hikari連接池以將我的java應用程序連接到我的oracle數據庫。我將v $ session.program設置爲我想要的程序名稱並將其添加到休眠配置中。

我創建了自己的hibernate配置類,它擴展了hibernate提供的Configuration類。

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場(應該是雖然問題,因爲它在升級之前的工作,太)SessionFactory的自定義包裝。

然後我打電話

Document configDocument = loadHibernateConfigruationDocument(); 
MyConfiguration conf = new MyConfiguration(); 
conf.configure(configDocument); 
conf.buildSessionFactory(); 

但是,如果我去到數據庫中(同時在應用程序運行)和查詢

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

我無法找到我剛開始的計劃。任何想法我做錯了什麼?

回答

0

我找到了解決方案。我剛剛將hibernate.hikari.dataSource.v$session.programhibernate.hikari.dataSource.v$session.username添加到我的配置中,並且正常工作正常。