2

私はJPAを使用してJavaSWINGアプリケーションを開発しており、Java EEを使用したJPAで多くの経験を積んでいますが、この場合、実行時に「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 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」は永続ユニットの名前です

ありがとう

于 2013-01-23T05:29:27.653 に答える