1

アプリケーションで JPA と Java Embedded DB を使用しています。データベースにデータを書き込もうとしましたが、それを読み戻そうとすると、それができます。しかし、アプリケーションが閉じられ、再度開いたときにデータが存在しません。

ここに私のpersistence.xmlファイルがあります

    <?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="myMoneyPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>mymoney.Money</class>
    <properties>
      <property name="eclipselink.jdbc.password" value="adminadmin"/>
      <property name="eclipselink.jdbc.user" value="admin"/>
      <property name="eclipselink.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
      <property name="eclipselink.jdbc.url" value="jdbc:derby:pocketmoney;create=true"/>
      <property name="eclipselink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

データベースの URL に問題はありますか。

jdbc:ダービー:ポケットマネー

4

1 に答える 1

3

データベースの URL に問題はありますか。

いいえ、それは正しく、現在の作業ディレクトリにデータベースを作成する必要があります。

問題をデバッグするためのいくつかのアイデア:

  • 完全な制御には絶対パスを使用してくださいjdbc:derby:/path/to/pocketmoney;create=true
  • データが書き込まれること (つまり、ファイルが変更されること) を確認します。
  • 次のプロパティを使用して正確に何が起こっているかを確認するには、EcliseLink ロギングを有効にします。

    <properties>
      ...
      <property name="eclipselink.debug" value="ALL"/>          
      <property name="eclipselink.logging.level" value="FINEST" />
      <property name="eclipselink.logging.level.sql" value="FINEST" />
      <property name="eclipselink.logging.level.cache" value="FINEST" />
    </properties>
    
  • トランザクションを適切にコミットしていることを再確認してください (コードが動作していると言っていますが、それを表示していないため、まだ疑いがあります)。

参考文献

于 2010-09-01T23:08:40.817 に答える