Весенние данные. получить пользовательские значения выберите (не сущность)

У меня есть этот запрос

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/Repository

@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. Есть ли более простой способ получить этот результат?

1 ответ

Непроверенное предупреждение, потому что query.getResultList() возвращает нетипизированный Collection вместо Collection<MyDto>, Если вы позвоните одному из EntityManager методы, которые возвращают TypedQuery<T> вместо Query это очистит это предупреждение. Этот SO ответ имеет несколько хороших рекомендаций по использованию @NamedNativeQuery с EntityManager.createNamedQuery(name, class) чтобы сделать это.

Другие вопросы по тегам