【发布时间】:2020-04-02 18:32:16
【问题描述】:
我有三个类:Lending、LendingReturn 和 ProductLending。
借贷
@Entity
public class Lending implements Serializable {
@Id
private Long id;
private BigDecimal amount;
private Instant createdDate;
private User lender;
private ProductLending productLending;
}
贷款回报
@Entity
public class LendingReturn implements Serializable {
@Id
private Long id;
private BigDecimal amount;
private Instant createdDate;
}
产品借贷
@Entity
public class ProductLending implements Serializable {
@Id
private Long id;
private String title;
}
以下是我的原生查询。我想查询然后将结果映射到好的映射列表中
Query query = em.createNativeQuery("select l.id, pl.title, sum(lr.amount)+l.amount as total_return, " +
"(select amount as yesterday_return from lending_return where lending_id=l.id and date(created_date)=current_date-2), " +
"l.period_in_day-(current_date-date(l.created_date)) as mature_in_day " +
"from lending_return lr right join lending l on lr.lending_id=l.id " +
"join product_lending pl on l.product_lending_id=pl.id " +
"where l.lender_id=:lenderId " +
"group by l.id, pl.title, l.amount");
query.setParameter("lenderId", userService.getLoggedInUser().getId());
List<Object[]> resultList = query.getResultList();
所以查询返回列:id、title、total_return、昨天_return
那么 resultList 包含:
[
[
2804,
"Title 1",
1001800,
600,
24
],
[
2809,
"Title 2",
null,
null,
28
]
]
如何映射 resultList 以使结果如下所示?
[
{
"id": 2804,
"title": "Title 1",
"total_return": 1001800,
"yesterday_return": 600,
"mature_in_day": 24
},
{
"id": 2809,
"title": "Title 2",
"total_return": null,
"yesterday_return": null,
"mature_in_day": 28
}
]
【问题讨论】:
标签: java hibernate jpa nativequery