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

Мои quations 1. Как я могу исправить эту ошибку и что означает эта ошибка? 2. Есть ли более простой способ получить этот результат?

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^