1

大家好,我正在使用 JPA 和 EclipseLink 和 oracle 作为 DB,我需要设置jdbc4 的属性 v$session它允许为应用程序设置一个标识名称以进行审计,但我没有幸运地设置它....我一直在按照本页中的示例尝试通过entitiyManager:http://wiki.eclipse.org/Configuring_a_EclipseLink_JPA_Application_(ELUG)它没有显示任何错误,但根本没有设置应用程序名称......当我看到审计时oracle 它没有使用我通过代码“客户”设置的名称进行审核,但是使用 OS_program_name=JDBC Thin Client 这意味着代码中的属性没有正确设置,我不知道问题出在哪里,我的代码使用如下:

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

有没有人知道怎么做或任何想法....

谢谢。-

4

1 回答 1

0

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"); 
于 2010-05-24T23:48:26.037 回答