我正在使用 JPA 开发 Java SWING 应用程序,我在 JPA 和 Java EE 方面获得了很多经验, 但在这种情况下,我想在运行时修改“persistence.xml”值。这可以在 Java EE 中使用应用程序服务器上的 JNDI 来完成,但在 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>
它的中继感谢任何人都可以帮助这个.. 谢谢
最佳答案
谢谢大家, 我找到了答案。如何在运行时修改属性 {第 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+
关于swing - JPA 桌面应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14398108/