【问题标题】:Spring data projection for native query not mapped to interface本机查询的 Spring 数据投影未映射到接口
【发布时间】:2020-12-31 09:09:36
【问题描述】:

这是我用于检索项目的存储库

@Query(value = "SELECT DISTINCT M.ID as \"id\", "
        + " M.NAME_PRIMARY_LANG as \"name\" "
        + " FROM ECOMMERCE_CORE.MERCHANT_ITEMS M , "
        + " ECOMMERCE_CORE.PRODUCT_UNIT_OF_MEASURE P , "
        + " ECOMMERCE_CORE.LOOKUP_TYPES_STATUS S , "
        + " ECOMMERCE_CORE.ITEM_TYPES T , "
        + " ECOMMERCE_CORE.ITEM_PRICE I,"
        + " ECOMMERCE_CORE.MERCHANT_ITEM_BRAND B, "
        + " ECOMMERCE_CORE.MERCHANT_ITEM_CATEGORY C "
        + " WHERE M.ID = P.PRODUCT_ID AND M.ID=I.PRODUCT_ID AND M.ID = B.MERCHANT_ITEM_ID AND  S.ID=M.STATUS_ID AND M.TYPE = T.ID AND M.MERCHANT_ID =?1 AND M.STATUS_ID =?2 "
        + " AND P.BRANCH_ID = ?3 AND I.CHANNEL_ID = ?4 ",
        nativeQuery = true
)
List<ItemModelProjection> findBySupplierIdAndStatusCode(long id, long status, long branchId, long channelId, Pageable pageable);

这是我的界面,我需要将结果映射到它

    @Getter
    @EqualsAndHashCode(of = {"id"})
    public class ItemModelProjection {

    private String id;
    private String name;

    public ItemModelProjection(final String id, final String name) {
        this.id = id;
        this.name = name;
    }}

而且这个查询的结果没有映射到接口,这是什么问题?

【问题讨论】:

    标签: spring spring-boot spring-data-jpa spring-projections


    【解决方案1】:

    您可以通过使用 projections 解决此问题并获得结果,方法是让 DTO 成为查询返回的列的 getter 接口。

    您需要做的就是拥有接口并包含以get 开头的查询域。

    public interface ItemModelProjection {
        Long getId();
        String getName();
    }
    

    【讨论】:

      【解决方案2】:

      如果您想检索这些值,您需要一个接口。并注意方法的命名。如果您喜欢AS name,请调用方法getName()。但是,如果您没有指定 AS 并且您正在返回一个值,例如 PRODUCT_UNIT_OF_MEASURE,那么请使用以下方法名称:getProduct_Unit_Of_Measure()

      要获取这两个值,请使用以下接口:

      public interface ItemModelProjection {
      
        String getId();
      
        String getName();
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-11
        • 1970-01-01
        • 2021-01-08
        • 2019-08-10
        • 1970-01-01
        • 1970-01-01
        • 2014-07-06
        • 2020-07-12
        相关资源
        最近更新 更多