1

我必须从数据表中检索选定患者的最后一次访问问题是查询总是返回公牛,这是负责的代码:

public class PatientDao implements Serializable {
......
    public List<String> findWithQuery(String query ,int id) {

 Query q=   this.getEntityManager().createQuery(query).setParameter("id",id);

    return q.getResultList(); 
}
}
......
}


@ManagedBean
@SessionScoped
@SuppressWarnings("serial")
public class PatientCtrl implements Serializable{
......
private static Patient selectedpatient = new Patient();
private static PatientDao pDao = new PatientDao();
private  static String lv   ;
......
public  void lastVisit()
{ 

this.setLv( pDao.findWithQuery("select max(v.date) from Visite v where v.patient.id = :id      ",selectedpatient.getId()).toString().replaceAll("^\\[", "").replaceAll("\\]$", ""));



 }



<h3>Dernière visite</h3>
       <p:outputLabel  value="#{patientCtrl.lv}"   />

它总是空的

4

1 回答 1

1

这是一个编码错误,因为您选择了 Patient.id=1 和 Patient=p 的 Visite。除非 = p.id =1,否则您将得不到任何结果,因此为 null。我相信您打算改用 setParameter("id",p) ,但是使用 v.patient.id=:id 和 v.patient = :p 似乎是多余的,无论如何都应该删除。

于 2013-05-11T00:56:33.497 回答