如何解决从联接选择转换为 DTO
我有这两张桌子
@Query(value = "SELECT bet.bet,match.name,match.week FROM bet INNER JOIN match ON match.id=bet.match_id WHERE match.week = ?1",nativeQuery = true)
List<Object[]> customQuery(Long week);
到目前为止,这是我可以检索结果并在以后实际使用它们的唯一方法。 要使用它们,我目前正在使用此代码
List<Object[]> bets = gr.customQuery(2l);
for (Object[] object : bets) {
int bet = (BigInteger) object[0];
String name = (String) object[1];
int week = (BigInteger) object[2];
System.out.println(bet + " " + name + " " + week);
}
但是这样使用它对我来说似乎很奇怪。有没有更好的方法将结果直接映射到 DTO 或其他东西...
解决方法
有一些选择。最直接的方法是定义一个投影接口,如:
public interface BetDTO {
Long getBet();
String getName();
Integer getWeek();
}
这样您就可以将查询返回类型更改为:
List<BetDTO> customQuery(Integer week);
剩下的将使用 getter。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。