Perché i miei dati non venga persistevano?
-
26-09-2019 - |
Domanda
Sto usando JPA e Java DB incorporato nella mia applicazione. Provo a scrivere alcuni dati nel database e quando provo a leggere di nuovo io sono in grado di farlo. Ma l'applicazione è chiuso e quando ho aperto di nuovo nessuno dei dati esistono.
Ecco il mio file 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>
C'è qualche problema nel mio URL del database.
jdbc: derby: pocketmoney
Soluzione
C'è qualche problema nel mio URL del database.
No, è corretto e dovrebbe creare una banca dati nella cartella di lavoro corrente.
Alcune idee per eseguire il debug del problema:
- Usa un percorso assoluto per
jdbc:derby:/path/to/pocketmoney;create=true
pieno controllo. - Verificare che i dati vengono scritti (vale a dire che i file cambia).
-
Attiva EcliseLink registrazione per vedere cosa sta succedendo esattamente utilizzando le seguenti proprietà:
<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>
-
Doppio controllo che non impegnano le transazioni in modo appropriato (si sta dicendo il codice sta facendo le cose, ma non si sta mostrando quindi c'è ancora un dubbio).