我必须从datatable检索所选患者的最后一次访问,问题是查询总是返回bull,这里是负责的代码:
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}" />
它始终为空
答案 0 :(得分:1)
这是一个编码错误,因为您选择带有patient.id = 1和患者= p的Visite。除非= p.id = 1,否则将得不到任何结果,因此为null。我相信你的意思是使用setParameter(“id”,p),但是使用v.patient.id =:id和v.patient =:p似乎是多余的,无论如何都应该删除它。