0

このクエリがあります

String  query = "select ig.p1,
       ig.p2,
       ig.p3, 
       tg.p4
  from mytable ig, mytable2 tg
 where ..... and ....";

そして、私はDTOを持っています

public class MyDto{
//constructor
private String p1;
private String p2;
private String p3;
private String p4;
...
//getters/setters
}

この選択と DTO へのマッピングを取得する必要があります。

これをDTOで作成します

@SqlResultSetMapping(
        name="findReport",
        classes={
                @ConstructorResult(
                        targetClass=MyDto.class,
                        columns={
                                @ColumnResult(name="p1",type = String.class),
                                @ColumnResult(name="p2", type = String.class),
                                @ColumnResult(name="p3", type = String.class),
                                @ColumnResult(name="p4", type = String.class),
                        }
                )
        }
)

そして、DAO/リポジトリを作成します

@Component
public class ReportRepositoryImpl implements ReportRepository {
    @PersistenceContext
    private EntityManager em;

    @Override
    public Report findReportSelect() {
        Query query = em.createNativeQuery(
                "query","findReport");
        @SuppressWarnings("unchecked")
        Collection<MyDto> dto = query.getResultList();

        Iterable<MyDto> itr = dto;
        return (MyDto)itr;
    }
}

しかし、私はエラーがありますunchecked

私の質問 1. このエラーを修正するにはどうすればよいですか? また、このエラーの意味を教えてください。2. この結果を得るより簡単な方法はありますか?

4

1 に答える 1

0

未チェックの警告は、の代わりにquery.getResultList()型なしを返すためです。代わりにa を返すメソッドのいずれかを呼び出すと、その警告はクリアされます。This SO answerには、 with を使用してそれを達成するための優れたガイダンスがあります。CollectionCollection<MyDto>EntityManagerTypedQuery<T>Query@NamedNativeQueryEntityManager.createNamedQuery(name, class)

于 2016-09-14T14:55:04.103 に答える