0

私は、他のいくつかのテーブルへのManyToOneを持つJiraissueテーブルへのonetoany結合を持つworklogテーブルを持っています。

私の要件に基づいて、以下のように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ステートメントから出力を取得する正しい方法は何ですか?

4

1 に答える 1

0

非ジェネリック Query クラスを使用しています。パラメータ化されたタイプの 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();

List<JiraissueColumns>これはを呼び出すことで返されquery.getResultList()ます。

于 2012-07-10T07:02:45.963 に答える