2014-06-05 2 views
0

J'avais précédemment utilisé Hibernate 3.2 et OSCP mais je viens de passer à Hibernate 4.3.5 et au pool de connexions Hikari pour connecter mon application Java à ma base de données Oracle. J'ai mis v $ session.program au nom de programme que je veux et l'ajoute à la configuration d'hibernate.

J'ai créé ma propre classe de configuration d'hibernation qui étend la classe Configuration fournie par 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)); 
    } 
} 

Le MySessionFactory est un emballage personnalisé pour la SessionFactory qui fait un peu de magie par réflexion avec le champ persistenceContext du SessionImpl (qui devrait être le problème parce que cela a fonctionné avant la mise à niveau, aussi).

J'appelle

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

Cependant, si je vais à la base de données (alors que l'application est en cours d'exécution) et requête

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

Je ne peux pas trouver le programme que je viens de commencer. Des idées de ce que je fais mal?

Répondre

0

J'ai trouvé la solution. Je viens d'ajouter hibernate.hikari.dataSource.v$session.program et hibernate.hikari.dataSource.v$session.username à ma configuration et tout a bien fonctionné.

Questions connexes