【问题标题】:how to get an Object fields如何获取对象字段
【发布时间】:2014-06-14 18:12:40
【问题描述】:

我在休眠中使用连接 sql,我必须返回一个 List<object>。 在xhtml 中,我使用数据表中的list[0],list[1]... 进入字段

 <p:dataTable id="display" var="listeFactures" value="#{factureBean.listeFactures}" editable="true" style="margin-bottom:10px" rowKey="#{listeFactures[0]}" selection="#{factureBean.facture}" selectionMode="single">
       <f:facet name="header">
           Liste des devis
       </f:facet>
       <p:column headerText="N° Facture">
           <p:cellEditor>
               <f:facet name="output"><h:outputText value="#{listeFactures[0]}" /></f:facet>
               <f:facet name="input"><p:inputText id="modelInput" value="#{listeFactures[0]}" style="width:100%"/></f:facet>

现在,为了编辑我在行上选择的字段,它给我一个对象 所以我使用索引factureBean.facture[0] 以相同的方式访问 但在我的 bean 中,我不知道如何获得我改变的值,因为它是一个对象。通常,如果它是特定的,例如Facture,我使用getFacture().getIdFacture() 来更改ID。 如果有人知道如何做到这一点,我感谢您的帮助 编辑: 这是 Facture.java

package net.vo;

import java.util.Date;

public class Facture  implements java.io.Serializable {


     private int idFacture;
     private Bondecommande bondecommande;
     private Rubrique rubrique;
     private Date dateFacture;
     private double montantFacture;
     private String etatFacture;

    public Facture() {
    }


    public Facture(int idFacture, Bondecommande bondecommande, Rubrique rubrique) {
        this.idFacture = idFacture;
        this.bondecommande = bondecommande;
        this.rubrique = rubrique;
    }
    public Facture(int idFacture, Bondecommande bondecommande, Rubrique rubrique, Date dateFacture, double montantFacture, String etatFacture) {
       this.idFacture = idFacture;
       this.bondecommande = bondecommande;
       this.rubrique = rubrique;
       this.dateFacture = dateFacture;
       this.montantFacture = montantFacture;
       this.etatFacture = etatFacture;
    }

    public int getIdFacture() {
        return this.idFacture;
    }

    public void setIdFacture(int idFacture) {
        this.idFacture = idFacture;
    }
    public Bondecommande getBondecommande() {
        return this.bondecommande;
    }

    public void setBondecommande(Bondecommande bondecommande) {
        this.bondecommande = bondecommande;
    }
    public Rubrique getRubrique() {
        return this.rubrique;
    }

    public void setRubrique(Rubrique rubrique) {
        this.rubrique = rubrique;
    }
    public Date getDateFacture() {
        return this.dateFacture;
    }

    public void setDateFacture(Date dateFacture) {
        this.dateFacture = dateFacture;
    }
    public double getMontantFacture() {
        return this.montantFacture;
    }

    public void setMontantFacture(double montantFacture) {
        this.montantFacture = montantFacture;
    }
    public String getEtatFacture() {
        return this.etatFacture;
    }

    public void setEtatFacture(String etatFacture) {
        this.etatFacture = etatFacture;
    }

}

@Override
    public List<Object> getAllFactures(int annee,int rubrique,int fournisseur) {
        Session session=HibernateUtil.getSession();
        try
        {
            session.beginTransaction();
            Rubrique r = daoR.getRubrique(rubrique);
            Fournisseur f = daoF.getFournisseur(fournisseur);
            Query q = session.createQuery("select f.idFacture,f.dateFacture,f.montantFacture,f.etatFacture,b.creditOuvert,b.creditReporte from Facture f,Budgetisation b,Rubrique r where year(f.dateFacture)=b.id.annee and f.rubrique=:rubrique and f.rubrique=r.idRubrique and r.idRubrique = b.rubrique and year(f.dateFacture)=:annee and f.bondecommande.devis.fournisseur=:fournisseur");
           q.setParameter("fournisseur", f);
          q.setParameter("rubrique", r);
         q.setParameter("annee", annee);
            listeFactures = q.list();
            return listeFactures;
        }
        catch(HibernateException e)
        {
            throw e;
        }
        finally
        {
            session.close();
        }
    }

【问题讨论】:

  • 您能发布您的Facture 课程吗?为什么以listeFactures[0] 而不是listeFactures.idFacture 访问您的属性?
  • 因为我从 dao 得到的是对象列表而不是事实列表。所以我不能以这种方式访问​​它listeFactures.idFacture。如果你能告诉我如何让我的 sql join 不返回 Object。我将编辑帖子@rion18
  • 你有没有试过把listeFactures = q.list();改成listeFactures = (List&lt;Facture&gt;q.list();,然后这个方法可以返回一个Facture列表。

标签: java sql hibernate jsf object


【解决方案1】:

您将获得List&lt;Object[]&gt; 而不是List&lt;Object&gt;,同时您将获得包含列(单个对象)的记录列表(对象[])。

【讨论】:

  • 我的反应不太好:我想说的是,不要使用这种加入方式。我现在使用左连接,它让我得到 List 而不是 List @Peter Wroblewski
猜你喜欢
  • 2011-07-19
  • 2011-03-29
  • 2017-05-31
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 2023-03-04
相关资源
最近更新 更多