FAQ 5

Aus Salespoint

Dies ist eine alte Version. Zeitpunkt der Bearbeitung: 13:00, 5. Okt. 2011 durch Christopher Bellmann (Diskussion | Beiträge).
Wechseln zu: Navigation, Suche

back to Salespoint 5

Inhaltsverzeichnis

Core

Ist es möglich mehrere verschiedene Inventare (Kataloge) vom selben Typ zu verwalten?
Nein, dies ist eine Einschränkung durch JPA, Inventare vom selben Typ zeigen auf die selbe Tabelle in der Datenbank.

Wieso sind viele Konstruktoren @Deprecated?
Parameterlose, nicht private Konstruktoren sind zwingend notwending für JPA, diese sollten nicht genutzt werden. Wenn eine Klasse einen deprecated Konstruktor besitzt, gibt es mindestens noch einen anderen der genutzt werden sollte.


Web

Spring MVC


Wo finde ich eine Einführung zu Spring MVC?
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html


JSTL


Wie benutze ich die JSTL?
Offizielles Tutorial: http://java.sun.com/javaee/5/docs/tutorial/doc/bnakc.html

Der JSTL forEach-Tag funktioniert nicht mit den im Framework zurückgegebenen Iterable<T>?

Der JSTL Tag kann nur mit java.util.Collection umgehen, der forEach-Tag in der Salespoint Taglib löst dieses Problem.

Gibt es eine Übersicht über alle JSTL Tags? Eine sehr magere Javadoc ist hier zu finden: http://download.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/

   Salespoint Tags



   Template Engine




JPA

Wo finde ich Informtionen zu JPA?
Tutorial: http://download.oracle.com/javaee/6/tutorial/doc/bnbpy.html Javadoc: http://download.oracle.com/javaee/6/api/javax/persistence/package-summary.html

Wie erstelle ich Tabellen für meine Entities?
Rechtsklick auf das Projekt-> JPA Tools -> Generate Tables from Entities

Wo kann man die erstellten Tabellen betrachten?
JPA View -> Datasource Explorer -> aktive Connection -> Schemas -> APP -> Tables
Es werden nicht für alle Entities Datenbanktabellen erstellt?
Entity Klassen müssen in der persistence.xml gelistet werden, dies macht Eclipse automatisch mit Rechtsklick auf die xml -> “Synchronize Class List”

Es werden nicht für alle Entites Tabellen erstellt, obwohl diese in der xml gelistet sind?
Stimmt die Datenbank Connection mit der aus der persistence.xml (javax.persistence.jdbc.url) überein?
Exception: “Class XYZ is not a known Entity Type”
Besitzt XYZ eine @Entity Annotation?

Exception: "No Persistence provider for EntityManager named $Name"
Stimmt der $Name der persistence-unit in der persistence.xml mit dem Namen zum call von Database.INSTANCE.initializeEntityManagerFactory($Name) überein?
Exception: [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Failed to start database '$PATH' with class loader sun.misc.Launcher$AppClassLoader@11b86e7, see the next exception for details.
Error Code: 40000
Besteht schon eine Verbindung zur Datenbank?
Lösung: JPA View -> Datasource Explorer ->Database Connections -> disconnect

Meine eigene Entity Klasse enthält eine Joda DateTime, dies kann nicht gespeichert werden?
JPA kann nur mit dem alten java.util.Date/Calendar umgehen, benutzt das als Attribut in der Klasse, wrapt es aber bei Herausgabe in ein Joda DateTime.

Es gibt Probleme beim Einstellen einer neuen DB Verbindung in Eclipse, genauer gesagt beim wählen der derby.jar "A driver already exists with that name. Please provide a unique driver name."
Lösung:Window -> Preferences -> Data Management -> Connectivity -> Driver Definitions -> vorhandene derby.jar löschen


Eclipse

SVN

JUnit

Die Tests werden abgebrochen, obwohl eine Transaktion noch offen ist.

Du hast wahrscheinlich einen Test der eine Exception erwartetet. In diesem wird zum Ändern von Daten in der Datenbank eine Transaktion geöffnet. Sobald JUnit die Exception erhält wird der nächste Test gestartet und der Befehl zum schließen wird nicht erreicht.
Lösung: überprüfe nach jedem Test (junit “@after”-Annotation) ob die Transaktionen deiner Entitiymanger im Test noch offen sind [entititymanager.getTransaciton().isActive()] und starte gegenfalls einen rollback [entititymanager.getTransaciton().rollback()]

Persönliche Werkzeuge