我正在使用JPA开发Java SWING应用程序,我在使用JPA和Java方面获得了很多经验,但在这种情况下,我想在运行时修改'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>它的转播感谢任何人能帮上忙..谢谢
发布于 2013-01-23 13:29:28
感谢大家,我找到了答案。如何在运行时修改属性{步骤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“是持久性单元的名称
谢谢R+
https://stackoverflow.com/questions/14398108
复制相似问题