2

我正在使用 JPA 开发 Java SWING 应用程序,我在 JPA 和 Java EE 方面有很多经验,但在这种情况下,我想在运行时修改“persistence.xml”值。这可以在应用服务器上使用 JNDI 在 Java EE 中完成,但在 Swing 应用程序中我没有找到任何解决方案

注意:persistence.xml 包含以下属性

<properties>
  <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/adlbprod?zeroDateTimeBehavior=convertToNull"/>
  <property name="javax.persistence.jdbc.password" value="123"/>
  <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
  <property name="javax.persistence.jdbc.user" value="root"/>
  <property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>

它的继电器感谢任何人都可以帮助这个..谢谢

4

1 回答 1

2

谢谢大家,我找到了答案。如何在运行时修改属性{步骤 1 删除要动态加载的属性}

<properties>
  <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/adlbprod?zeroDateTimeBehavior=convertToNull"/>
  <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
</properties>

{步骤 2 为持有属性值创建一个 Map }

 Map pmap = new HashMap();
    pmap.put("javax.persistence.jdbc.password", "123");
    pmap.put("javax.persistence.jdbc.user", "root");
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPAQueryPU",pmap);

    try {

        EntityManager em = emf.createEntityManager(pmap);
        Map<String, Object> properties = emf.getProperties();
        System.out.println("pro"+properties);


        Batch ct = new Batch();
        EntityTransaction transaction = em.getTransaction();
        transaction.begin();
        ct.setDescription("Test Batch");

        em.persist(ct);
        transaction.commit();


    } catch (Exception e) {
        e.printStackTrace();

    }

注意:-“JPAQueryPU”是持久性单元的名称

谢谢R+

于 2013-01-23T05:29:27.653 回答