Вопрос

Я ранее использовал Hibernate 3.2 и BoneCP, но я просто обновил в Hibernate 4.3.5 и бассейн соединения Hikari, чтобы подключить мое приложение Java для моей базы данных Oracle.Я устанавливаю v $ session.program на имя программы, которое я хочу и добавить его в конфигурацию Hibernate.

Я создал свой собственный класс конфигурации 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));
    }
}
.

Генеракодицетагкод представляет собой пользовательскую обертку для Sessionactactory, которая делает некоторую магию через отражение с помощью поля PersiSceCtext SEASICIMPL (это должно быть проблемой, хотя, потому что он тоже работал до модернизации).

Тогда я звоню

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.programAnd hibernate.hikari.dataSource.v$session.username к моей конфигурации, и все работает нормально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top