【问题标题】:Override persistence.xml property覆盖 persistence.xml 属性
【发布时间】:2013-02-14 18:54:36
【问题描述】:

在 Glassfish 应用服务器上运行应用程序时,覆盖 EclipseLink persistence.xml 属性的正确方法是什么?

我们需要在一个单独的配置文件中配置一些属性,这些属性可供客户端使用。

我没有找到任何接受某些用户属性的特定于 EclipseLink 的类。我只找到了 Glassfish PersistenceUnitLoader 类,可以对其进行调整以实现这一目标。但这将是一个丑陋的黑客:)

【问题讨论】:

    标签: glassfish jpa-2.0 eclipselink


    【解决方案1】:

    您可以在运行时创建自己的 EntityManager:

    Map map = new HashMap();  
    
    map.put("javax.persistence.jdbc.password", "password");  
    map.put("javax.persistence.jdbc.user", "root");  
    
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyPU",map);  
    EntityManager em = emf.createEntityManager(map);  
    

    一些eclipselink属性名:

      <property name="eclipselink.target-database" value="DERBY"/>
      <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
      <property name="eclipselink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
      <property name="eclipselink.jdbc.url" value="jdbc:derby://localhost:1527/02DB;create=true"/>
      <property name="eclipselink.jdbc.user" value="user"/>
      <property name="eclipselink.jdbc.password" value="password"/>
    

    【讨论】:

    • 是的,但正如我所说,我在容器中运行我的应用程序,所以我注入 EntityManager 而不是自己创建它。对于 Java SE,你的方法就足够了,我同意。不过还是谢谢你的建议。
    猜你喜欢
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多