Derby/JavaDB NullPointerException bei VORHANDENEM EntityManager-Objekt!!!

jimmykimmy

Mitglied
Hallo zusammen, ich habe ein kleines Problem.
Ich bekomme in meiner Funktion "persist()" direkt in der ersten Funktionszeile ("em.getTransaction().begin();") die Meldung:

Exception in thread "main" java.lang.NullPointerException

Die Funktion "persist()" wird in der Funktion "beispieldaten()" aufgerufen. Dort gibt es außerdem die Ausgabe:

Java:
System.out.println("            EntityManager: " + em);

Die mir folgende Ausgabe liefert:

EntityManager: org.eclipse.persistence.internal.jpa.EntityManagerImpl@bb0d0d

Sprich: das Objekt "em" ist gültig und NICHT null.

Wenn ich aber in der Funktion "beispieldaten()" die Funktion "persist()" aufrufe, die wiederum mit dem EntityManager-Objekt "em" arbeitet, so bekomme ich an der Stelle "em.getTransaction().begin();" eine "NullPointerException".

Warum? "em" ist doch - wie die Ausgabe auch bestätigt - NICHT null.

ich hoffe ihr könnt mir weiterhelfen?!

Java:
import java.util.Scanner;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.PersistenceException;

public class var1 {

    private EntityManagerFactory emf = Persistence.createEntityManagerFactory("KBS_prak6PU");
    private EntityManager em = emf.createEntityManager();

    public void beispieldaten() {
        System.out.println("\n####################################################");
        System.out.println("            Lege Mitarbeiterdaten in der Datenbank an!");
        System.out.println("            EntityManager: " + em);
        System.out.println("            Optionen: nullable=true, updatable=false, unique=false");
        System.out.println("            Lege NULL Wert an:");
        System.out.println("####################################################\n");

        String namen[] = {"Egon", "Erwin", "Ute", "Aische", ""};
        try {
            for (int i = 0; i < namen.length; i++) {
                persist(new Mitarbeiter1((i + 1), namen[i]));
            }
        } catch (PersistenceException e) {
        }
    }

    public void persist(Object object) {
        em.getTransaction().begin();
        try {
            em.persist(object);
            em.getTransaction().commit();
        } catch (Exception e) {
            if (em.getTransaction().isActive()) {
                em.getTransaction().rollback();
            }
            System.out.println(e);
        } finally {
            em.close();
        }
    }

    public void schliessen() {
        if (em != null && em.isOpen()) {
            em.close();
        }
        if (emf != null && emf.isOpen()) {
            emf.close();
        }
    }

    public var1() {
        // Beispieldaten für Mitarbeiter1 anlegen
        beispieldaten();
        // EntityManager für Mitarbeiter1 schließen
        schliessen();
    }
}

LG
jimmy
 

jimmykimmy

Mitglied
Die persistence.xml sieht so aus:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
  <persistence-unit name="KBS_prak6PU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>Mitarbeiter1</class>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/sample"/>
      <property name="javax.persistence.jdbc.password" value="app"/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
      <property name="javax.persistence.jdbc.user" value="app"/>
    </properties>
  </persistence-unit>
</persistence>

Wenn ich meine Methode "persist()" anpasse, funktioneirt es, allerdings möchte ich natürlich mit dem globalen EntityManager arbeiten und nicht mit einem lokalen :-/

Java:
    public void persist(Object object) {
        EntityManager em2 = emf.createEntityManager();
        em2.getTransaction().begin();
        try {
            em2.persist(object);
            em2.getTransaction().commit();
        } catch (Exception e) {
            if (em2.getTransaction().isActive()) {
                em2.getTransaction().rollback();
            }
            System.out.println(e);
        } finally {
            em2.close();
        }
    }
 

javaDev2011

Mitglied
Hi jimmykimmy,

Das einzige was ich im Code finden konnte, war dass du
Java:
em2.getTransaction().begin();
und
Java:
em2.getTransaction().begin();
aufrufst, anstatt ein EntityTransaction-Object zu erzeugen, so:
Java:
EntityTransaction trans = em2.getTransaction();
trans.begin();
...
trans.commit();

Ich hoffe ich konnte dir ein bisschen helfen,
javaDev2011
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V SQLite NullPointerException in preparedStatement.close(); Datenbankprogrammierung 8
C NullPointerException auf 1nem Rechner von 2 Datenbankprogrammierung 19
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
D NullPointerException bei DB Verbindung Datenbankprogrammierung 6
T NullPointerException bei Verbindung zur Datenbank Datenbankprogrammierung 4
T NullpointerException Datenbankprogrammierung 10
B ResultSet wirft komische NullPointerException. Datenbankprogrammierung 3
Q java.lang.NullPointerException connection = null Datenbankprogrammierung 13
T NullPointerException ( EclipseLink mit OSGi) Datenbankprogrammierung 10
T JPA: NullPointerException nach persist Datenbankprogrammierung 3
A NullPointerException bei DB-Abfrage Datenbankprogrammierung 2
S Jar-Ausführung / RMI / Datenbank / NullPointerException Datenbankprogrammierung 30
S nullpointerexception bei HSQLDB Datenbankprogrammierung 4
T NullPointerException bei leeren Feldern Datenbankprogrammierung 10
R NUllPointerException bei Datenbankabfrage Datenbankprogrammierung 4
S Hsqldb java.lang.NullPointerException Datenbankprogrammierung 2
A NullPointerException trotz getConnection Datenbankprogrammierung 6
H java.lang.NullPointerException Datenbankprogrammierung 7
P Probleme mit NullPointerException Datenbankprogrammierung 5
A MySQL Parallel laufende EntityManager kommen sich in die Quere Datenbankprogrammierung 1
N HSQLDB Problem mit EntityManager Datenbankprogrammierung 7
M HSQLDB EntityManager null? Datenbankprogrammierung 7
S Hibernate, jpa, EntityManager etc. Datenbankprogrammierung 6
J method createQuery in interface javax.persistence.EntityManager cannot be applied to given types ... Datenbankprogrammierung 2
M No Persistence provider for EntityManager Datenbankprogrammierung 1
S JPA (EntityManager für jeden Nutzer?) Datenbankprogrammierung 8
K Was fehlt? - No Persistence provider for EntityManager Datenbankprogrammierung 4
QDog JPA EntityManager auslagern Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben