2010-05-24 5 views
1

bonjour tout le monde j'utilise JPA avec EclipseLink et Oracle DB et j'ai besoin de définir la propriété v $ session de jdbc4 permet de définir un nom d'identification à l'application à des fins d'audit mais je n'avais pas de chance de le configurer .... J'ai essayé via entitiyManager en suivant l'exemple de cette page: http://wiki.eclipse.org/Configuring_a_EclipseLink_JPA_Application_(ELUG) il ne montre aucune erreur, mais ne définit pas le nom de l'application du tout ... quand je vois l'audit dans Oracle n'est pas audité avec le nom que j'ai défini par le code "Customers" mais avec OS_program_name = JDBC Thin Client cela signifie que la propriété dans le code n'est pas définie correctement et je ne sais pas où le problème est, le code que j'utilise est le suivant:Besoin d'aide pour mettre le nom de l'application avec JPA (EclipseLink)

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

Quelqu'un sait comment le faire ou toute idée ....

thanks.-

Répondre

0

v$session.program est une propriété de connexion JDBC, mais Persistence.createEntityManagerFactory obtient les propriétés de l'unité de persistance. Il n'existe aucun moyen direct de transmettre une propriété JDBC arbitraire dans le gestionnaire d'entités.

Cependant, EclipseLink vous pouvez utiliser 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"); 
Questions connexes