salve raga oggi ho iniziato un nuovo progetto, comprato il pc nuovo e sono passato a seven (mi sa che sto per ripassare a linux). Comunque ho scontrato un nuovo problema mai incontrato prima d'ora.Illustro il mio problema.
Devo creare un semplice programma manageriale per un ristorante di media dimensione, le solite cose, cioe gestione dipendenti, magazzino fattura e asporto. sarebbero un 17 tabelle del db compreso tabelle relazionali.
Vi spiego i procedimenti, che ho fatto io:
1. creo un nuovo progetto con new java project.
2. creo un package entity e faccio new entity class for database.
3. mi creo le varie classi del progetto che avevo sviluppato in uml(tute solo fittizie generate con il tool)
4. mi sono implementato la prima classe GestioneDipendente utilizzando la PersistenceManager
Visto che era un po che non usavo gli entity ho detto testiamo se la classe funziona:codice:package classi; import java.util.List; import entity.*; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; public class GestoreDipendente { // // String cf; // String nome; // String cognome; // String indirizzo; // String tel; // String ruolo; // double stipedio; // String contratto; Dipendente dipendente; @PersistenceContext private EntityManager em; public GestoreDipendente(String cf, String nome, String cognome, String indirizzo, Integer tel, String ruolo, double stipendio, String contratto, String descrContratto) { dipendente = new Dipendente(cf, nome, cognome, indirizzo, tel, ruolo, stipendio); dipendente.setDescrizioneContratto(descrContratto); dipendente.setTipodicontratto(contratto);// il tipo do contratto che è stato stipulato col dipendente // this.cf = cf; // this.nome = nome; // this.cognome = cognome; // this.indirizzo = indirizzo; // this.tel = tel; // this.ruolo = ruolo; // this.stipedio = stipendio; // this.contratto = contratto; } public void cerca() { throw new UnsupportedOperationException(); } public List<Dipendente> generaLista() { List<Dipendente> dList = em.createNamedQuery("Dipendente.findAll").getResultList(); return dList; } /*forse n serve sarebbero la genericaLista, molto semplice e nemo costosa*/ public Object[][] generaMatrice() { throw new UnsupportedOperationException(); } public String getRuolo() { return dipendente.getRuolo(); } public void inserisciDipendente() { System.out.println(dipendente.toString()+dipendente.getCognome()); boolean open = em.isOpen(); em.persist(dipendente); } public void modificaDipendente() { em.merge(dipendente); } public void rimuoviDipendente() { em.remove(em.merge(dipendente)); } public List<Dipendente> visualizzaDipendente() { throw new UnsupportedOperationException(); } }
ho creato un semplice main ed ho provato ad aggiungere un dipendente nel db, ma mi da un errore:facendo il debug il codice si blocca su questa liena di codice:codice:Exception in thread "main" java.lang.NullPointerException at classi.GestoreDipendente.inserisciDipendente(GestoreDipendente.java:59) at ristoranteGui.Ristorante.main(Ristorante.java:33) Java Result: 1
perché l'entitymanager em in quel istante risulta essere nullo. sapete dove sta il problema. riguardando vari codici su internet, nessuno inizializza l'entity manager.codice:boolean open = em.isOpen();
forse cera un altro passaggio per settare la persistenza che ora mi sfugge.
grazie in anticipo.

Rispondi quotando