当前位置: 首页 > 知识库问答 >
问题:

Spring data JPA-映射对象从本地查询返回到POJO

傅正阳
2023-03-14

我有一个场景,我想把从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。数据地图。PropertyReferenceException:找不到类型优惠券的属性FindTodayPoffer!

我应该移动名称查询和sql结果映射到我的实体类吗?问题是我不想污染我的实体类,有什么方法可以通过向我的实体类添加更多代码来实现这一点吗?

共有1个答案

上官凯歌
2023-03-14

我认为存储库中的functionname应该重命名为findByDateAndTime。

 类似资料:
  • 我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!

  • 我需要使用本机查询对2-3个表执行联合操作,并需要将结果映射到自定义对象中。由于JPA不支持UNION子句,所以JPA不可能实现同样的事情。 我听说过SqlResultSetMap,它在这种情况下有用吗? 如何以及在哪里使用这个,任何链接或其他东西?没有在谷歌上获得太多信息。

  • 问题内容: 我有两个C#类 和 在dbContext调用中使用它,以通过EF5映射数据库中的返回对象 我遇到的问题是,即使返回了地址数据,我似乎也无法获得映射的地址对象。searchResult映射的其他属性很好。 问题答案: SqlQuery不支持 您应该做的是:

  • 我正在开发我的第一个FastAPI和Pydantic项目,在尝试从endpoint返回生成器时遇到了一个问题。问题在下面,任何投入都将不胜感激! 我有一个 API endpoint,我首先从数据库中获取数据记录,然后使用 map 函数格式化每条记录。但是,将映射结果返回到终结点时,键值映射出错。请注意,出于性能考虑(大数据量),我想将endpoint的返回类型保留为生成器。 我的伪代码: 这样,我

  • 问题内容: 是否可以将本机SQL查询的结果映射到Grails域类实例的集合? 问题答案:

  • 我希望在我的dao对象中有这样的方法 但我得到了错误 错误:不确定如何将游标转换为此方法的返回类型public abstract java。util。地图 是否可以将其更改为工作版本? 因此,返回的类型可能不同,但主要条件是 数据库中只能有一个查询 我希望避免额外的代码,比如只为这个方法创建额外的数据结构