Hibernate 4.3.5 忽略 v$session.program 配置属性
-
26-12-2019 - |
题
我以前使用过 hibernate 3.2 和boneCP,但我刚刚升级到 hibernate 4.3.5 和 Hikari 连接池来将我的 java 应用程序连接到我的 oracle 数据库。我将 v$session.program 设置为我想要的程序名称,并将其添加到 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
是 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;
我找不到我刚刚启动的程序。有什么想法我做错了吗?
解决方案
我找到了解决方案。我刚刚添加了 hibernate.hikari.dataSource.v$session.program
和 hibernate.hikari.dataSource.v$session.username
根据我的配置,一切正常。
不隶属于 StackOverflow