【问题标题】:spring data repository with native named query on unMapped POJO在未映射的 POJO 上具有本机命名查询的 spring 数据存储库
【发布时间】:2020-01-24 23:16:41
【问题描述】:

我有一个名为 company 的 POJO,它映射到名为 company 的数据库表 我有一个只有两个字段的本机查询(由于遗留原因,公司有很多我想删除的急切映射)

系统正在使用弹簧数据 我想映射为本机查询,并且只将这两个标量填充到我的公司列表中 我如何使用 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(); ```

【问题讨论】:

    标签: java spring-data-jpa


    【解决方案1】:

    显然 spring 数据中存在一个问题,解决如下:

    @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了解更多信息

    【讨论】:

      猜你喜欢
      • 2017-04-29
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      • 2019-03-01
      • 2021-02-21
      • 1970-01-01
      相关资源
      最近更新 更多