« Was bisher so geschieht... | Main | JPA YEEHA! »

Betr. JPA

Bisher hat der Umbau der vorhanden Klassen hinsichtlich der Nutzung von JPA promblemloser funktioniert als gedacht. Bisher versuche ich halt nur, das User Objekt aus der Tabelle User auszulesen.
Letztendlich muss ich aber mein bisheriges Konzept soweit umstellen, dass ich die Validierung von Eingaben aus der User Klasse in eine sperate Application Klasse auslagere.
Allen anschein nach klappt das Laden der User Klasse mit Hilfe eines EntityManagers fehlerlos, allerdings scheint es da an einigen Stellen noch zu Problemen zu kommen.

Nach der Überarbeitung sieht die User Klasse nun wie folgt aus:

Screenshot1.png

Die Methoden isLogin and isWithName werden dann wahrscheinlich auch ausgelagert werden müssen. Das Attribut error wird wohl einer Fehlerbehandlungsklasse weichen und in Folge dessen als Sammlung von Exceptions implimentiert werden.

Als Primary Key habe ich mich jetzt für das Attribut Name entschieden, da es scheinbar nur möglich ist, die find Methode des EntityManagers anhand eines Primary keys zu nutzen und ich aller Vorraussicht nach eher nach Namen als nach IDs suchen werde.

Das Laden des Objektes passiert nun in einer neuen Klasse Application:

Screenshot.png

Leider wird mir bei der Methode showID() eine NullPointerException geworfen, die ich noch nicht ganz nachvollziehen kann :-/. Letztendlich wird mir JPA aber denke ich eine Menge an Arbeit abnehmen, sobald es erstmal stabil läuft.

Bei Sun habe ich allerdings noch ein Beispiel gefunden, was wie perfekt für mich zu sein scheint, weil es schon ziemlich viel von dem behandelt, was ich eigentlich machen möchte [1]

TrackBack

TrackBack URL for this entry:
http://www.innoq.com/movabletype/mt-tb.cgi/2793

Comments (3)

Es wäre gut, NPE und Quelltext zu sehen.

Hast Du etwa keinen Datensatz in der DB, der zur Anfrage passt?

Tritt die NPE etwa schon im Konstruktor auf, da keine PersistenceUnit konfiguriert ist, oder kein passender Provider im Classpath hinterlegt ist?

Gruß,

Phillip

Also es lag tatsächlich daran, dass in der Tabelle kein Eintrag mehr vorhanden war, weil JPA meinte, mal eben meine komplette Tabelle neu schreiben zu müssen. Jetzt funktioniert alles, da ich jetzt erst manuall ein neues User Objekt in die Tabelle einfüge.

Was jetzt noch nicht funktioniert ist, dass die ID automatisch um eins erhöht wird (oder beim ersten Eintrag auf 1 gesetzt wird). Ob ich das jetzt der Datenbank überlasse oder ob es da etwas eine Funktion vom Entity Manager gibt, muss ich mal sehen.

Halo,

@Id
@javax.persistence.GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;

damit wird ID um eins hochgezählt!

mfg

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on October 9, 2007 9:40 AM.

The previous post in this blog was Was bisher so geschieht....

The next post in this blog is JPA YEEHA!.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.31