Auf Thema antworten

Hallo zusammen, ich habe ein kleines Problem.

Ich bekomme in meiner Funktion "persist()" direkt in der ersten Funktionszeile ("em.getTransaction().begin();") die Meldung:




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


[code=Java]System.out.println("            EntityManager: " + em);[/code]


Die mir folgende Ausgabe liefert:




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?!


[code=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();

    }

}

[/code]


LG

jimmy



Oben