在数据库中插入后,应用程序不会显示它

时间:2015-07-16 13:44:46

标签: java-ee jpa entity

我正在学习Java EE,我正面临着一个问题。

使用HeidiSQL,我在订单表中添加了一个新行。

然后我转到可以列出所有订单的已部署应用程序。 当我全部显示时,新订单不会显示在列表中。

我正在使用Entity和JPA。 我必须再次部署我的应用程序(即使我没有做任何更改)来显示新订单。

有没有办法强制数据在已部署的应用中“进入”?

感谢您的回答

编辑:提供了一些代码:首先,我如何获取数据

    public List<Commande> findCustom(String ref, String villeD, String villeA,
            Date DD1, Date DD2, Date DA1, Date DA2,
            String cpD, String cpA, String dest) {
        return em.createNamedQuery("Commande.customSearch", Commande.class)
                .setParameter("reference", ref)
                .setParameter("villeD", villeD)
                .setParameter("villeA", villeA)
                .setParameter("dateD1", DD1)
                .setParameter("dateD2", DD2)
                .setParameter("dateA1", DA1)
                .setParameter("dateA2", DA2)
                .setParameter("cpD", cpD)
                .setParameter("cpA", cpA)
                .setParameter("dest", dest)
                .getResultList();
    }

我的命名查询是:

    @NamedQuery(name = "Commande.customSearch", query = "SELECT c FROM Commande c "
            + "WHERE c.refCommande LIKE :reference "
            + "AND c.dateDepart BETWEEN :dateD1 AND :dateD2 "
            + "AND c.dateLivraisonPrevue BETWEEN :dateA1 AND :dateA2 "
            + "AND c.communeDepart LIKE :villeD "
            + "AND c.communeArrivee LIKE :villeA "
            + "AND c.cpDepart LIKE :cpD "
            + "AND c.cpArrivee LIKE :cpA "
            + "AND c.lieuLivr LIKE :dest "
            + "ORDER BY c.dateLivraisonPrevue ASC"),

然后,我如何显示我的数据: (p是我的页面参数,对不起法国变种)

<c:forEach items="${sessionScope.commandes}" var="cmd" begin="${(p - 1) * 8}" end="${p * 8}">
    <tr data-href="${cmd.idCommande}">
        <td>${cmd.refCommande}</td>
        <td><fmt:formatDate value="${cmd.dateLivraisonPrevue}" type="DATE" pattern="dd/MM/yyyy" /></td>
        <td>
            <b>${cmd.lieuLivr}</b>
            - ${cmd.adresse1Arrivee} ${cmd.adresse2Arrivee} ${cmd.adresse3Arrivee}
            - <i>${cmd.cpArrivee} ${cmd.communeArrivee}</i>
        </td>
        <td>${cmd.dernierEtat.codeStatut.libelleSituation}</td>
        <td><c:if test="${fn:length(cmd.fichierList) > 0}"><span class="glyphicon glyphicon-paperclip" aria-hidden="true"></span></c:if></td>
    </tr>
</c:forEach>

这是我的Commande Class代码,包含所有注释:

package Classes;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author xxx
 */
@Entity
@Table(name = "commande")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Commande.customSearch", query = "SELECT c FROM Commande c "
            + "WHERE c.refCommande LIKE :reference "
            + "AND c.dateDepart BETWEEN :dateD1 AND :dateD2 "
            + "AND c.dateLivraisonPrevue BETWEEN :dateA1 AND :dateA2 "
            + "AND c.communeDepart LIKE :villeD "
            + "AND c.communeArrivee LIKE :villeA "
            + "AND c.cpDepart LIKE :cpD "
            + "AND c.cpArrivee LIKE :cpA "
            + "AND c.lieuLivr LIKE :dest "
            + "ORDER BY c.dateLivraisonPrevue ASC"),

    @NamedQuery(name = "Commande.findCommandes", query = "SELECT c FROM Commande c "
            + "WHERE c.tiers IN (:tiers) "
            + "ORDER BY c.dateLivraisonPrevue DESC"),

    @NamedQuery(name = "Commande.findAll", query = "SELECT c FROM Commande c"),
    @NamedQuery(name = "Commande.findByIdCommande", query = "SELECT c FROM Commande c WHERE c.idCommande = :idCommande"),
    @NamedQuery(name = "Commande.findByNumCommande", query = "SELECT c FROM Commande c WHERE c.numCommande = :numCommande"),
    @NamedQuery(name = "Commande.findByRefCommande", query = "SELECT c FROM Commande c WHERE c.refCommande LIKE :refCommande"),
    @NamedQuery(name = "Commande.findByEncombrement", query = "SELECT c FROM Commande c WHERE c.encombrement = :encombrement"),
    @NamedQuery(name = "Commande.findByDateDepart", query = "SELECT c FROM Commande c WHERE c.dateDepart = :dateDepart"),
    @NamedQuery(name = "Commande.findByChargement", query = "SELECT c FROM Commande c WHERE c.chargement = :chargement"),
    @NamedQuery(name = "Commande.findByLieuChgt", query = "SELECT c FROM Commande c WHERE c.lieuChgt = :lieuChgt"),
    @NamedQuery(name = "Commande.findByAdresse1Depart", query = "SELECT c FROM Commande c WHERE c.adresse1Depart = :adresse1Depart"),
    @NamedQuery(name = "Commande.findByAdresse2Depart", query = "SELECT c FROM Commande c WHERE c.adresse2Depart = :adresse2Depart"),
    @NamedQuery(name = "Commande.findByAdresse3Depart", query = "SELECT c FROM Commande c WHERE c.adresse3Depart = :adresse3Depart"),
    @NamedQuery(name = "Commande.findByCpDepart", query = "SELECT c FROM Commande c WHERE c.cpDepart = :cpDepart"),
    @NamedQuery(name = "Commande.findByCommuneDepart", query = "SELECT c FROM Commande c WHERE c.communeDepart = :communeDepart"),
    @NamedQuery(name = "Commande.findByDateLivraisonPrevue", query = "SELECT c FROM Commande c WHERE c.dateLivraisonPrevue = :dateLivraisonPrevue"),
    @NamedQuery(name = "Commande.findByLivraison", query = "SELECT c FROM Commande c WHERE c.livraison = :livraison"),
    @NamedQuery(name = "Commande.findByLieuLivr", query = "SELECT c FROM Commande c WHERE c.lieuLivr = :lieuLivr"),
    @NamedQuery(name = "Commande.findByAdresse1Arrivee", query = "SELECT c FROM Commande c WHERE c.adresse1Arrivee = :adresse1Arrivee"),
    @NamedQuery(name = "Commande.findByAdresse2Arrivee", query = "SELECT c FROM Commande c WHERE c.adresse2Arrivee = :adresse2Arrivee"),
    @NamedQuery(name = "Commande.findByAdresse3Arrivee", query = "SELECT c FROM Commande c WHERE c.adresse3Arrivee = :adresse3Arrivee"),
    @NamedQuery(name = "Commande.findByCpArrivee", query = "SELECT c FROM Commande c WHERE c.cpArrivee = :cpArrivee"),
    @NamedQuery(name = "Commande.findByCommuneArrivee", query = "SELECT c FROM Commande c WHERE c.communeArrivee = :communeArrivee"),
    @NamedQuery(name = "Commande.findByNumDossier", query = "SELECT c FROM Commande c WHERE c.numDossier = :numDossier"),
    @NamedQuery(name = "Commande.findByAffrete", query = "SELECT c FROM Commande c WHERE c.affrete = :affrete"),
    @NamedQuery(name = "Commande.findByCiiCommande", query = "SELECT c FROM Commande c WHERE c.ciiCommande = :ciiCommande")})
public class Commande implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idCommande")
    private Integer idCommande;
    @Size(max = 64)
    @Column(name = "num_commande")
    private String numCommande;
    @Size(max = 64)
    @Column(name = "ref_commande")
    private String refCommande;
    @Size(max = 128)
    @Column(name = "encombrement")
    private String encombrement;
    @Column(name = "date_depart")
    @Temporal(TemporalType.DATE)
    private Date dateDepart;
    @Size(max = 64)
    @Column(name = "chargement")
    private String chargement;
    @Size(max = 64)
    @Column(name = "lieu_chgt")
    private String lieuChgt;
    @Size(max = 64)
    @Column(name = "adresse1_depart")
    private String adresse1Depart;
    @Size(max = 64)
    @Column(name = "adresse2_depart")
    private String adresse2Depart;
    @Size(max = 64)
    @Column(name = "adresse3_depart")
    private String adresse3Depart;
    @Size(max = 64)
    @Column(name = "cp_depart")
    private String cpDepart;
    @Size(max = 64)
    @Column(name = "commune_depart")
    private String communeDepart;
    @Column(name = "date_livraison_prevue")
    @Temporal(TemporalType.DATE)
    private Date dateLivraisonPrevue;
    @Size(max = 64)
    @Column(name = "livraison")
    private String livraison;
    @Size(max = 64)
    @Column(name = "lieu_livr")
    private String lieuLivr;
    @Size(max = 64)
    @Column(name = "adresse1_arrivee")
    private String adresse1Arrivee;
    @Size(max = 64)
    @Column(name = "adresse2_arrivee")
    private String adresse2Arrivee;
    @Size(max = 64)
    @Column(name = "adresse3_arrivee")
    private String adresse3Arrivee;
    @Size(max = 64)
    @Column(name = "cp_arrivee")
    private String cpArrivee;
    @Size(max = 64)
    @Column(name = "commune_arrivee")
    private String communeArrivee;
    @Size(max = 64)
    @Column(name = "num_dossier")
    private String numDossier;
    @Size(max = 64)
    @Column(name = "affrete")
    private String affrete;
    @Size(max = 64)
    @Column(name = "cii_commande")
    private String ciiCommande;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "ciiCommande")
    private List<Fichier> fichierList;
    @JoinColumn(name = "dernier_etat", referencedColumnName = "idEtat")
    @ManyToOne
    private Etat dernierEtat;
    @JoinColumn(name = "tiers", referencedColumnName = "tiers")
    @ManyToOne(optional = false)
    private Tiers tiers;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "ciiCommande")
    private List<Etat> etatList;

然后我的CommandeFacade代码:

package Facades;

import Classes.Commande;
import Classes.Tiers;
import java.util.Date;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author xxx
 */
@Stateless
public class CommandeFacade extends AbstractFacade<Commande> {

    @PersistenceContext(unitName = "PortailTransportPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public CommandeFacade() {
        super(Commande.class);
    }

    public Commande findByIdCommande(int id) {
        return em.createNamedQuery("Commande.findByIdCommande", Commande.class)
                .setParameter("idCommande", id)
                .getSingleResult();
    }

    public List<Commande> findByRefCommande(String ref) {
        return em.createNamedQuery("Commande.findByRefCommande", Commande.class)
                .setParameter("refCommande", ref)
                .getResultList();
    }

    public List<Commande> findCommandes(List<Tiers> t) {
        return em.createNamedQuery("Commande.findCommandes", Commande.class)
                .setParameter("tiers", t)
                .getResultList();
    }

    public List<Commande> findCustom(String ref, String villeD, String villeA,
            Date DD1, Date DD2, Date DA1, Date DA2,
            String cpD, String cpA, String dest) {
        return em.createNamedQuery("Commande.customSearch", Commande.class)
                .setParameter("reference", ref)
                .setParameter("villeD", villeD)
                .setParameter("villeA", villeA)
                .setParameter("dateD1", DD1)
                .setParameter("dateD2", DD2)
                .setParameter("dateA1", DA1)
                .setParameter("dateA2", DA2)
                .setParameter("cpD", cpD)
                .setParameter("cpA", cpA)
                .setParameter("dest", dest)
                .getResultList();
    }
}

编辑2: servlet代码

List<Partenaireutilisateur> PU = usr.getPartenaireutilisateurList();
List<Partenaire> partenaires = new ArrayList<>();
for (Partenaireutilisateur pu : PU) {
    partenaires.add(pu.getIdPartenaire());
}
// 1.2 - Les tiers
List<Tiers> tiers = new ArrayList<Tiers>();
for (Partenaire p : partenaires) {
    tiers.addAll(p.getTiersList());
}

// 2 - Les commandes
List<Commande> commandes = new ArrayList<Commande>();
for (Tiers T : tiers) {
    commandes.addAll(T.getCommandeList());
}


for (Commande c : commandes) {

    // Commandes hebdomadaires
    if (c.getDateDepart().compareTo(current) <= 0
            && c.getDateDepart().compareTo(past) >= 0) {
        commandesW.add(c);
    }
}

session.setAttribute("commandes", commandesW);
session.setAttribute(("cmdcount"), commandesW.size());
request.setAttribute("pageTitle", "Dernières commandes");

this.getServletContext().getRequestDispatcher("/WEB-INF/commandes.jsp").forward(request, response);

我希望这是足够的代码

0 个答案:

没有答案