[英]Map result of a sql query to pojo using spring Data JPA
[英]Spring data JPA - Map object returned from native query to a POJO
我有一種情況,我想將從JPA存儲庫中的本機查詢中獲取的數據映射到自定義對象。
我的存儲庫代碼如下:
@Query(nativeQuery = true,name = "TopCouponOffer")
List<TopCouponOffer> findTodayTopOffer(@Param("date") String date, @Param("time") String time);
我的自定義類代碼如下:
@NamedNativeQuery(
name = "TopCouponOffer",
query =
"SELECT c.id,c.code\n" +
" FROM COUPON c \n" +
"JOIN CLICK cl\n" +
"ON cl.coupon_id = c.id\n" +
"JOIN COUPONS_STATUS cs\n" +
"ON cs.id= c.coupons_status_id\n" +
"JOIN COUPONS_OFFER_TYPE ct\n" +
" ON ct.id= c.coupons_offer_types_id\n" +
"WHERE\n" +
" c.ongoing_offer = 1 AND\n" +
" c.coupons_status_id != 4 AND\n" +
"IF(:date < c.end_date,\n" +
" IF(:date < c.start_date,\n" +
" 0,\n" +
" IF(:date = c.start_date,\n" +
" IF(:time < c.start_time,\n" +
" 0,\n" +
" 1),\n" +
" 1)),\n" +
" IF(:date = c.end_date || :date = c.start_date, \n" +
" IF(:time > c.end_time || :time < c.start_time,\n" +
" 0,\n" +
" 1), 0)) = 1 ORDER BY cl.count DESC LIMIT 2",
resultSetMapping = "TopCouponOffer",
resultClass = TopCouponOffer.class
)
@SqlResultSetMapping(name="TopCouponOffer",
classes = {
@ConstructorResult(targetClass = TopCouponOffer.class,columns = {
@ColumnResult(name = "id"),
@ColumnResult(name = "code")
})
}
)
public class TopCouponOffer {
Integer id;
String code;
public TopCouponOffer(Integer id, String code){
this.id=id;
this.code=code;
}
}
但是運行應用程序時出現以下錯誤
原因:org.springframework.data.mapping.PropertyReferenceException:沒有為Coupon類型找到屬性findTodayTopOffer!
我應該將名稱查詢和sqlresultmapping移到我的實體類嗎? 問題是我不想污染我的實體類,有什么辦法可以通過向我的實體類添加更多代碼來實現呢?
我相信您在存儲庫中的函數名應重命名為findByDateAndTime。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.