我在hibernate中使用join 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]
以相同的方式访问
但在我的豆子里,我不知道我怎么能得到我改变的价值因为它是一个对象。通常,如果它是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();
}
}
答案 0 :(得分:0)
当您获得包含列(单个对象)的记录列表(object [])时,您将获得List<Object[]>
而不是List<Object>
。