【发布时间】: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<Facture>q.list();,然后这个方法可以返回一个Facture列表。
标签: java sql hibernate jsf object