gpt4 book ai didi

java - 将 JPAContainer 与 Vaadin 框架结合使用时,服务器重置缺乏持久性

转载 作者:行者123 更新时间:2023-11-30 07:14:40 26 4
gpt4 key购买 nike

我在我的 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();

我主要是在寻找有关在哪里查看的提示和技巧,我已经在谷歌上搜索了两周了

最佳答案

您将持久性单元设置为每次通过“eclipselink.ddl- Generation”属性值“drop-and-create-tables”部署持久性单元时删除并创建所有表。每次服务器重新启动时都会进行部署,这解释了为什么会丢失数据。

此设置仅适用于可能发生与先前架构不兼容的剧烈实体更改时的开发。您可能想使用“创建”或“创建或扩展表”,如here所述。

关于java - 将 JPAContainer 与 Vaadin 框架结合使用时,服务器重置缺乏持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38640612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com