【问题标题】:a query result from a selected entity returns null来自选定实体的查询结果返回 null
【发布时间】:2013-05-05 17:17:41
【问题描述】:

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

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}"   />

它总是为空

【问题讨论】:

  • 从数据表中选择患者后,会出现一个对话框,其中包含

标签: eclipse jpa eclipselink


【解决方案1】:

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

【讨论】:

  • 即使我改了,结果还是一样
  • 你有什么数据,生成了什么SQL?仅从“选择 v.date from Visite v where v.patient.id = :id”返回什么值?
  • 我想让最后选择的患者就诊从数据表到输出标签 pDao.findWithQuery("select max(v.date) from Visite v where v.patient.id = :id ",selectedpatient .getId()).toString();我把结果放在静态字符串变量(lv)中
  • 为什么要在 List 上调用 toString 而不是检索 List 中包含的 String?而且您还没有提到发出的查询SQL是什么,或者您在数据库中拥有的数据。
  • 当我用像 1 这样的实数替换 :id 时,它会返回一个结果,但是当我使用 selectedpatient.getId() 时,查询返回 [null],在这种情况下 findWithQuery 返回一个列表只返回一个字符串(日期)所以我把字符串 PS 没有异常只是在 outputlabel 中为 null
猜你喜欢
  • 2021-05-29
  • 2018-06-16
  • 1970-01-01
  • 2021-06-26
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多