【问题标题】:Spring data. get custom values select(not entity)弹簧数据。获取自定义值选择(不是实体)
【发布时间】:2017-01-22 09:17:07
【问题描述】:

我有这个问题

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. 有没有更简单的方法得到这个结果?

【问题讨论】:

    标签: spring spring-data spring-repositories hibernate-native-query


    【解决方案1】:

    未经检查的警告是因为query.getResultList() 返回一个未键入的Collection 而不是Collection&lt;MyDto&gt;。如果您调用返回 TypedQuery&lt;T&gt; 而不是 QueryEntityManager 方法之一,它将清除该警告。 This SO answer 有一些很好的指导来使用 @NamedNativeQueryEntityManager.createNamedQuery(name, class) 来实现这一点。

    【讨论】:

      猜你喜欢
      • 2010-10-19
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 2020-01-04
      • 2021-05-23
      • 2013-10-15
      相关资源
      最近更新 更多