我有这个查询
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.有更简单的方法得到这个结果吗?
答案 0 :(得分:0)
未经检查的警告是因为query.getResultList()
返回的是无类型Collection
而非Collection<MyDto>
。如果您致电EntityManager
方法之一而返回TypedQuery<T>
而不是Query
,则会清除该警告。 This SO answer对于@NamedNativeQuery
与EntityManager.createNamedQuery(name, class)
一起使用 <ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Width="25" Height="25" Source="{Binding ImagePath}" />
<TextBlock Text="{Binding RumNummer}" Margin="12,0,0,0" />
<TextBlock Text="{Binding Våning}" Margin="150,0,0,0" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
有一些很好的指导。