【问题标题】:Wildfly Data PersistenceWildfly 数据持久性
【发布时间】:2016-09-24 21:59:20
【问题描述】:

我目前正在处理一个 Java EE 项目,并且正在使用 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>

如果我想持久化任何信息,我需要重新配置这个文件吗?

我希望你能帮助我:)

【问题讨论】:

    标签: java jpa jakarta-ee ejb wildfly


    【解决方案1】:

    你的问题是这一行

    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
    

    每次 wildfly 启动时,JPA 都会创建一个带有空数据库的新数据库模型。

    调整你的代码

     <property name="hibernate.hbm2ddl.auto" value="update" />
    

    【讨论】:

    • 感谢您的回答 :) 但它似乎不起作用:/ 我创建了一个新的 EJB,然后包含了 JPA 并完全像这样配置了 persistence.xml。
    【解决方案2】:

    您使用的是默认设置为 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>
    

    使用在您的主文件夹中存储为“test”的基于 H2 文件的数据库(假设为 *nix)。

    您还可以在datasources-section 中定义其他数据库(Postgresql、Oracle 等)。

    【讨论】:

    • 谢谢 :) 我不知道。最后我安装了 Postgresql,现在一切正常;)
    猜你喜欢
    • 2015-12-23
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多