簡體   English   中英

在未映射的 POJO 上使用本機命名查詢的 spring 數據存儲庫

[英]spring data repository with native named query on unMapped POJO

我有一個名為 company 的 POJO,它映射到一個名為 company 的數據庫表我有一個只有兩個字段的本機查詢(來自遺留原因的公司有很多我想刪除的急切映射)

系統正在處理 spring 數據我想映射為本地查詢並且只將這兩個標量填充到我的公司列表中我如何使用 CompanyRepository 來完成它?

@Entity
@Audited
@Table(name = "company")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
  @NamedNativeQuery(
      name = "getDefaultBuyers",
      query =
          "SELECT c.id as id ,c.name as name"
              + "FROM complex query with non mapped tables "
      resultSetMapping = "getDefaultBuyersMapping")

 @SqlResultSetMapping(
      name = "getDefaultBuyers",
      columns = {@ColumnResult(name = "name"),@ColumnResult(name = "id")})
public class Company {
 @Column(name = "id", nullable = false, length = 32)
 protected String id;
@Column(name = "name", nullable = false)
 protected String name;
//diffrent properties 
}

@Repository
public interface CompanyRepository
    extends JpaRepository<Company, Long>, JpaSpecificationExecutor<Company>{}

編輯我不認為它很優雅,但是這個有效,有人可以幫我做得更優雅嗎

@Repository
public interface CompanyRepository
    extends JpaRepository<Company, Long>, JpaSpecificationExecutor<Company>{
@Query(
      value =
          "SELECT c.id as id ,c.name as name FROM bidder_config b, native_version n, company c WHERE ...",
      nativeQuery = true)
  Object[][] getDefaultBuyers(); ```

顯然彈簧數據中存在一個問題,解決方法如下:

@Repository
public interface CompanyRepository
    extends JpaRepository<Company, Long>, JpaSpecificationExecutor<Company>{
    @Query(nativeQuery = true)
  List<DefaultBuyerDTO> getDefaultBuyers();
}

有關更多信息,請參閱https://github.com/spring-projects/spring-data-examples/tree/master/jpa/jpa21#support-for-custom-sqlresultsetmapping-with-constructorresult

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM