Hibernate 4.3.5忽略v $ session.program配置属性

时间:2014-06-05 10:46:41

标签: java oracle hibernate database-connection hikaricp

我之前使用过hibernate 3.2和boneCP,但我刚刚升级到hibernate 4.3.5和Hikari连接池,将我的java应用程序连接到我的oracle数据库。我将v $ session.program设置为我想要的程序名称并将其添加到hibernate配置中。

我已经创建了自己的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是SessionFactory的自定义包装器,通过使用SessionImpl的persistenceContext字段进行反射来做一些魔术(这应该是问题,因为它在升级之前也有效)。

然后我打电话给

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;

我无法找到刚刚开始的程序。我有什么想法我做错了吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我刚刚将hibernate.hikari.dataSource.v$session.programhibernate.hikari.dataSource.v$session.username添加到我的配置中,并且everthing工作正常。