2014-06-05 93 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添加到我的配置中,并且正常工作正常。