Нужна помощь в настройке имени приложения с помощью JPA (EclipseLink) - PullRequest
1 голос
/ 25 мая 2010

привет всем, я использую JPA с EclipseLink и oracle в качестве БД, и мне нужно установить свойство v $ session jdbc4 , которое позволяет установить идентификационное имя для приложения в целях аудита, но у меня не былоповезло, что я его установил .... я пробовал через priviyManager, следуя примеру на этой странице: http://wiki.eclipse.org/Configuring_a_EclipseLink_JPA_Application_(ELUG) он не показывает никаких ошибок, но вообще не устанавливает имя приложения ... когда я вижу аудитв оракуле он не проверяется с именем, которое я установил с помощью кода «Клиенты», но с OS_program_name = JDBC Thin Client это означает, что свойство в коде не устанавливается должным образом, и я понятия не имею, где проблема, код, который яЯ использую следующее:

    emProperties.put("v$session.program","Customers");
    factory=Persistence.createEntityManagerFactory("clients",emProperties);
    em=factory.createEntityManager(emProperties);        
    em.merge(clients);

Кто-нибудь знает, как это сделать или любая идея ....

спасибо .-

1 Ответ

0 голосов
/ 25 мая 2010

v$session.program - это свойство соединения JDBC, но Persistence.createEntityManagerFactory получает свойства единицы сохраняемости. Не существует прямого способа передать произвольное свойство JDBC в диспетчер сущностей.

Однако в EclipseLink вы можете использовать SessionCustomizer:

public class ProgramCustomizer extends SessionCustomizer {
    @Override
    public void customize(Session s) throws Exception {
        s.getDatasourceLogin().setProperty("v$session.program", "Customers");
        super.customize(s);
    }
}

-

emProperties.put(PersistenceUnitProperties.SESSION_CUSTOMIZER, "ProgramCustomizer"); 
...