Ich verwende die JPAContainer-Implementierung in meiner Vaadin-Anwendung (GWT-basiertes Java Web Application Framework). Ich habe in kleine Probleme geraten, da die Entwicklung zu einem Ende neigt, von denen alle zu einem Grad mit der Persistenz in Verbindung stehen (da keine Daten tatsächlich in der Datenbank abgelegt werden und alles verloren ist, wenn ich den Server neu starte).Mangelnde Persistenz beim Zurücksetzen des Servers bei Verwendung von JPAContainer mit Vaadin Framework
Hier ist, wo ich die Entity Manager aus der PERSISTENCE_UNIT definieren
private static JPAContainer<QueryableDicom> dicomDataContainer; @PersistenceContext(unitName = "companynamedb")
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
transient EntityManager entityManager = entityManagerFactory.createEntityManager();
Und das ist, wie ich meine JPAContainer instanziiert
dicomDataContainer = JPAContainerFactory.make(QueryableDicom.class, entityManager);
Hier ist mein relevent Teil meiner persistence.xml:
<persistence-unit name="companynamedb">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.jdbc.platform"
value="org.eclipse.persistence.platform.database.H2Platform" />
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/./dcmCache" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="eclipselink.logging.level" value="FINE" />
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode"
value="database" />
</properties>
</persistence-unit>
Ich bin mir nicht sicher, ob das helfen wird, aber hier ist, wie ich hinzufügen Einheiten in den Behälter:
entityManager.getTransaction().begin();
for (int i = 0; uploads[i] != null; i++) {
dicomDataContainer.addEntity(uploads[i]);
}
entityManager.getTransaction().commit();
Ich bin vor allem für Hinweise und Tipps auf, wo zu sehen Ich habe herum googeln jetzt für zwei Wochen
Mit JPA müssen Sie sagen, wann zu commit (Mittel schreiben Änderungen zurück auf Festplatte/db) –