我有一个工作日志表,它与 Jiraissue 表有 onetomany 连接,而 Jiraissue 表也有 ManyToOne 连接到其他几个表。
我根据我的要求写了如下的 jqpl 语句。
@NamedQueries({
@NamedQuery(name = "Worklog.findbySelection", query = "SELECT distinct workl.jiraissueWorklog.pkey, workl.jiraissueWorklog.summary, workl.jiraissueWorklog.issuestatusOBJ.pname, workl.jiraissueWorklog.cwduserOBJ.displayName, workl.jiraissueWorklog.created, workl.jiraissueWorklog.updated FROM Worklog workl where workl.jiraissueWorklog.project = :project and workl.startdate between :startDate AND :endDate" ),
})
现在我想将输出存储在一个列表对象中,所以我把它作为 Worklog 对象。
@SuppressWarnings("unchecked")
public List<JiraissueColumns> findByDateProject(Date startDate,Date endDate,long projectID){
Query query = em.createNamedQuery("Worklog.findbySelection");
query.setParameter("startDate", startDate);
query.setParameter("endDate", endDate);
query.setParameter("project", projectID);
this.listOfWorklog = (List<JiraissueColumns>) query.getResultList();
return listOfWorklog;
}
当我使用 for 循环查找列表中的内容时,出现以下错误。
Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to listOfWorklog
我确实明白 listOfWorklog 只能接受类型 Worklog 和 Jiraissue 对象,但 Jiraissue 又具有 Project,issuelist 对象。那些会被继承到 Worklog。
从 JPQL 语句获取输出的正确方法是什么?