【问题标题】:join statement using JPQL (using hibernate jpa) to store in a list使用 JPQL(使用 hibernate jpa)的 join 语句存储在列表中
【发布时间】:2012-07-10 00:20:17
【问题描述】:

我有一个工作日志表,它与 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" ),
     })

现在我想将输出存储在一个列表对象中,所以我把它作为工作日志对象。

    @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 语句获取输出的正确方法是什么?

【问题讨论】:

    标签: hibernate jakarta-ee jpa jpql


    【解决方案1】:

    您正在使用非通用查询类。对于参数化类型的 Query,有一个 TypedQuery:

    TypedQuery<JiraissueColumns> query = em.createNamedQuery(
        "Worklog.findbySelection",
        JiraissueColumns.class);
    
    query.setParameter("startDate", startDate);
    query.setParameter("endDate", endDate);
    query.setParameter("project", projectID);
    
    return listOfWorklog = query.getResultList();
    

    这将通过调用query.getResultList() 返回List&lt;JiraissueColumns&gt;

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 2011-01-08
      • 2022-11-12
      • 1970-01-01
      • 2018-06-08
      • 2020-04-18
      • 2016-05-27
      • 2020-08-17
      • 2020-04-25
      相关资源
      最近更新 更多