Domanda

Ho usato in precedenza Hibernate 3.2 e BoneCP, ma ho appena aggiornato a Hibernate 4.3.5 e il pool di connessione Hikari per collegare l'applicazione Java al mio database Oracle.Ho impostato V $ Session.Program sul nome del programma che voglio e aggiungerlo alla configurazione ibernazione.

Ho creato la mia classe di configurazione di Hibernate che estende la classe Configuration fornita da 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));
    }
}
.

Il MySessionFactory è un involucro personalizzato per la SessionFactory che fa qualche magia tramite la riflessione con il campo PersistenceContext del SessionImpl (che dovrebbe essere il problema però perché ha funzionato prima dell'aggiornamento).

Allora chiamo

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

Tuttavia se vado al database (mentre l'applicazione è in esecuzione) e la query

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

Non riesco a trovare il programma che ho appena iniziato.Qualche idea cosa sto facendo male?

È stato utile?

Soluzione

Ho trovato la soluzione.Ho appena aggiunto hibernate.hikari.dataSource.v$session.programAndODiceTagCoDiceDiceTagCode alla mia configurazione e tutto il mondo funzionava bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top