4

ほとんどすべてがタイトルに含まれています...アプリの起動時に永続性は正常に機能し、アプリを閉じても行はDBに残りますが、アプリが読み込まれると行が削除されます...

mysql5SGBDを介して既存のデータベース構造を使用しています。

私のエンティティマネージャーの宣言から来ているようです。これが私のコードの数行です(エンティティマネージャーステートメントとpersistence.xml)

entityManagerステートメント:

entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory(resourceMap.getString("entityManager.persistenceUnit")).createEntityManager();
query = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery(resourceMap.getString("query.query"));

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="AnalysesPU" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.PersistenceProvider
    <class>solianceanalysesmanager.Produits
    <properties>
      <property name="toplink.jdbc.user" value="XXX"/>
      <property name="toplink.jdbc.password" value="X"/>
      <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/Analyses"/>
      <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
    </properties>
  </persistence-unit>
</persistence>

誰かがこの奇妙な問題の原因について考えていますか?私のentityManagerがそのステートメントで永続コンテキストを再初期化していることをすでに示唆しています...

PS:私はフランス語なので、いくつかの単語を誤用したり、スペルを間違えたりした可能性があります。自由に再定式化を依頼してください。

4

3 に答える 3

2

TopLink Essentialsはデフォルトではテーブルを再作成しませんが、これはpersistence.xmlで構成できます。

http://wiki.eclipse.org/EclipseLink/Examples/JPA/DDLを参照して ください

Glassfishを使用していると思いますか?Glassfishはデフォルトで開発モードでこれを行うと思いますが、これを回避するために構成する必要のあるGlassfish設定がいくつかあります。Glassfishでこれがどのように構成されているかはわかりませんが、おそらく他の誰かが構成しています。

于 2011-02-15T14:10:36.077 に答える
2

そのため、問題は次のとおりでした。persistence.xmlの設定にもかかわらず、Netbeansのデフォルトの動作は自動的な「ドロップアンドクリエイト」戦略です。

プロジェクトをビルドした後、.jarを使用してもデータベーステーブルはリセットされません。

于 2011-02-15T15:28:37.690 に答える
1

あなたのpersistence.xmlはいくつかのプロパティ定義を見逃しています...あなたはどのように振る舞うかをエンティティマネージャに指定しなければなりません、それはデフォルト設定としてドロップと作成パラメータを取ります。そのため、アプリの読み込み時にすべての行が削除されます。この行を追加して、jpaの動作を変更してみてください。

<property name="toplink.ddl-generation" value="create-tables"/>  
于 2011-03-31T18:39:16.750 に答える