我在我的 Vaadin(基于 GWT 的 Java Web 应用程序框架)应用程序中使用了 JPAContainer 实现。随着开发接近尾声,我遇到了一些小问题,所有这些都在一定程度上与持久性有关(因为实际上没有数据放入数据库中,并且每当我重新启动服务器时都会丢失)。
这是我从 PERSISTENCE_UNIT 定义实体管理器的地方
private static JPAContainer<QueryableDicom> dicomDataContainer; @PersistenceContext(unitName = "companynamedb")
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
transient EntityManager entityManager = entityManagerFactory.createEntityManager();
这就是我实例化我的 JPAContainer 的方式
dicomDataContainer = JPAContainerFactory.make(QueryableDicom.class, entityManager);
这是我的 persistence.xml 的相关部分:
<persistence-unit name="companynamedb">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.jdbc.platform"
value="org.eclipse.persistence.platform.database.H2Platform" />
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/./dcmCache" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="eclipselink.logging.level" value="FINE" />
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode"
value="database" />
</properties>
</persistence-unit>
我不确定这是否会有所帮助,但这是我将实体添加到容器的方法:
entityManager.getTransaction().begin();
for (int i = 0; uploads[i] != null; i++) {
dicomDataContainer.addEntity(uploads[i]);
}
entityManager.getTransaction().commit();
我主要是在寻找有关在哪里寻找的提示和技巧,我已经在谷歌上搜索了两个星期了