我目前正在开发一个Java项目,并且正在使用Wildfly服务器。我有一个部署到Wildfly服务器上的Web项目和EJB项目。例如,我可以保存一个用户,但只能在服务器运行的时候。在服务器宕机之间不存在数据持久性。我在网上找过了,但没有找到答案。
我的persistence.xml看起来像这样:
<persistence-unit name="primary">
<!-- If you are running in a production environment, add a managed
data source, this example data source is just for development and testing! -->
<!-- The datasource is deployed as WEB-INF/kitchensink-quickstart-ds.xml, you
can find it in the source at src/main/webapp/WEB-INF/kitchensink-quickstart-ds.xml -->
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<properties>
<!-- Properties for Hibernate -->
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.show_sql" value="false" />
<value="true"/>
</properties>
如果我想持久化任何信息,我需要重新配置这个文件吗?
我希望你能帮助我:)
发布于 2016-05-27 02:39:12
你的问题是这一行
<property name="hibernate.hbm2ddl.auto" value="create-drop" />每次wildfly启动时,JPA都会使用一个空数据库创建一个新的数据库模型。
将您的代码调整为
<property name="hibernate.hbm2ddl.auto" value="update" />发布于 2016-05-27 21:27:15
您使用的是默认设置为H2内存数据库的"ExampleDS“。因此,它不会故意在两次重新启动之间保存数据(对于开发/测试很有用)。转到wildfly的standalone/ configuration /standalone.xml配置文件,在"datasources“部分搜索"ExampleDS”。它应该显示:
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>其中"mem“表示内存中。您可以将"mem:test“更改为任何写入路径,例如
<connection-url>jdbc:h2:~/test;DB_CLOSE_DELAY=-1</connection-url>使用主文件夹中存储为“H2”的基于测试文件的数据库(假设*nix)。
您还可以在datasources-section中定义其他数据库(Postgresql、Oracle等)。
https://stackoverflow.com/questions/37468618
复制相似问题