0

Derby データベースを使用しています。検索が実行されるエンティティは次のとおりです。

package ca.etsmtl.gti525.entity.presentation;

import ca.etsmtl.gti525.commun.CommunService;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Remarque : peu importe la date et l'heure une représantation ce fait que dans une seul salle a la fois. (pour un même spectacle)
 * @author REDOUANE
 *
 */
@Entity
@Table(name = "SHOW_REPRESENTATION")
public class Representation implements Serializable {
    private static final long serialVersionUID = 1L;


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;
    @Column(name = "DATE_DEBUT")
    @Temporal(TemporalType.DATE)
    private Date dateDebut;
//    @Column(name = "HEURE_DEBUT")
//    @Temporal(TemporalType.TIME)
//    private Calendar heureDebut;

    @Column(name = "NB_BILLETS_DISPO")
    private Integer nbBilletsDispo;
    @Column(name = "QTE_SELECTED")
    private Integer QTE=0;
    @Column(name = "PRIX")
    private Float prix;


    @OneToOne
    private Salle salle;

    @ManyToOne
    private Spectacle spectacle;

    @OneToOne(mappedBy = "representation")
    private Billet billet;


    public Integer getQTE() {
        return QTE;
    }

    public void setQTE(Integer QTE) {
        this.QTE = QTE;
    }

    public Billet getBillet() {
        return billet;
    }

    public void setBillet(Billet billet) {
        this.billet = billet;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Spectacle getSpectacle() {
        return spectacle;
    }

    public void setSpectacle(Spectacle spectacle) {
        this.spectacle = spectacle;
    }

    public Integer getNbBilletsDispo() {
        return nbBilletsDispo;
    }

    public void setNbBilletsDispo(Integer nbBilletsDispo) {
        this.nbBilletsDispo = nbBilletsDispo;    
        //int min_ticket_allowed = nbBilletsDispo;
       // if (nbBilletsDispo >= 6) min_ticket_allowed = 6;
       // optionsQte2.clear();
       // for (int i=0; i< min_ticket_allowed +1; i++) optionsQte2.add(i);
    }

    public Float getPrix() {
        return prix;
    }
    public void setPrix(Float prix) {
        this.prix = prix;
    }

    public Date getDateDebut() {
        return dateDebut;
    }

    public void setDateDebut(Date dateDebut) {
        this.dateDebut = dateDebut;
    }
    public Salle getSalle() {
        return salle;
    }

    public void setSalle(Salle salle) {
        this.salle = salle;
    }


    public void verfierDispo(){
//      CommunService.addWarn("QTE !", ""+this.QTE);
      if(this.nbBilletsDispo<this.QTE){  
      CommunService.addWarn("ATTENTION !", "Le nombre de billets disponible est insuffisant");
      }

    }
}

これは、find メソッドを含む私の dao クラスです。

package ca.etsmtl.gti525.dao.presentation;

import ca.etsmtl.gti525.entity.presentation.Artiste;
import ca.etsmtl.gti525.entity.presentation.Billet;
import ca.etsmtl.gti525.entity.presentation.Representation;
import ca.etsmtl.gti525.entity.presentation.Salle;
import ca.etsmtl.gti525.entity.presentation.Spectacle;
import ca.etsmtl.gti525.entity.vente.Reservation;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaQuery;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public class DaoJpaPresentation implements IDaoPresentation, Serializable {
    private static final long serialVersionUID = 1L;

    //l'ingection du "e-ticket-jpa-hibernate-PU"
    @PersistenceContext
    private EntityManager em;

    // liste des clients
    @Override
    public List<Artiste> getAllArtistes() {
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            cq.select(cq.from(Artiste.class));
            return em.createQuery(cq).getResultList();

        } catch (Exception ex) {
            //getLogger().log(Level.WARNING, "Exception lors de l''appel au service " + entityClass + " Impl.findAll {0} : ", ex.getMessage());
            return null;
        }
    }

    @Override
    public List<Spectacle> getAllSpectacle() {
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            cq.select(cq.from(Spectacle.class));
            return em.createQuery(cq).getResultList();

        } catch (Exception ex) {
            //getLogger().log(Level.WARNING, "Exception lors de l''appel au service " + entityClass + " Impl.findAll {0} : ", ex.getMessage());
            return null;
        }
    }

    @Override
    public List<Representation> getAllRepresentation() {
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            cq.select(cq.from(Representation.class));
            return em.createQuery(cq).getResultList();

        } catch (Exception ex) {
            //getLogger().log(Level.WARNING, "Exception lors de l''appel au service " + entityClass + " Impl.findAll {0} : ", ex.getMessage());
            return null;
        }
    }

    @Override
    public void createBillet(Billet billet) {
        try {
            em.persist(billet);
        } catch (Exception ex) {
            Logger.getLogger(DaoJpaPresentation.class.toString()).log(Level.SEVERE, ex.toString());
        }
    }

    @Override
    public Representation findRepresentation(Long id) {
        try {
            Query query;
            query = (Query) em.createQuery("SELECT a FROM Representation a  where a.id=:id");
            query.setParameter("id", id);

            return ((Representation) query.getSingleResult());
        } catch (Exception ex) {
            Logger.getLogger(DaoJpaPresentation.class.toString()).log(Level.SEVERE, ex.toString());
            return null;
        }
    }

    @Override
    public Salle findSalle(Long id) {
        return null;
    }

    @Override
    public Reservation findReservation(Long id) {
        return null;
    }

    @Override
    public void createRepresentation(Representation representation) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void createSalle(Salle salle) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void createSpectacle(Spectacle spectacle) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void createArtist(Artiste artist) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Representation findRepresentationByID(Long id) {
        try {
            return em.find(Representation.class, id);
        } catch (Exception ex) {
            //getLogger().log(Level.WARNING, "Exception lors de l''appel au service " + entityClass + " Impl.find {0} : ", ex.getMessage());
            System.out.print("Erreure ici au DAO");
            return null;
        }
    }
}

そして、ここにメソッドを呼び出す方法があります

Long idRep = panier.getIdRep();
                            bil.setRepresentation(this.daoPresentation.findRepresentationByID(idRep));

そのため、この最後の行でnullpointer例外が発生しているため、findメソッドが表現オブジェクトを返していません

java.lang.NullPointerException
    at ca.etsmtl.gti525.vente.ProcessPaiementControleur.save(ProcessPaiementControleur.java:103)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
    at javax.faces.component.UICommand.broadcast(UICommand.java:300)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

このSQLクエリを実行すると、まだ検索していますが、正しい行が表示されます

select * from APP.SHOW_REPRESENTATION a where a.id=4
4

0 に答える 0