Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对未映射POJO使用本机命名查询的spring数据存储库_Java_Spring Data Jpa - Fatal编程技术网

Java 对未映射POJO使用本机命名查询的spring数据存储库

Java 对未映射POJO使用本机命名查询的spring数据存储库,java,spring-data-jpa,Java,Spring Data Jpa,我有一个名为company的POJO,它映射到名为company的数据库表 我有一个只有两个字段的本机查询(legacy Reasures的公司有很多我想删除的急切映射) 系统正在处理spring数据 我希望映射为本机查询,只将这两个标量填入我的公司列表 我如何使用公司存储库来完成它 @Entity @Audited @Table(name = "company") @Data @AllArgsConstructor @NoArgsConstructor @Builder @NamedNat

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

系统正在处理spring数据 我希望映射为本机查询,只将这两个标量填入我的公司列表 我如何使用公司存储库来完成它

@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>{}

@实体
@审计
@表(name=“公司”)
@资料
@AllArgsConstructor
@诺尔格构装师
@建筑商
@命名设备(
name=“GetDefaultBudders”,
质疑=
“选择c.id作为id,c.name作为名称”
+“来自具有非映射表的复杂查询”
结果映射=“GetDefaultBuyerMapping”)
@SqlResultsMapping(
name=“GetDefaultBudders”,
columns={@ColumnResult(name=“name”),@ColumnResult(name=“id”)}
公营公司{
@列(name=“id”,null=false,长度=32)
受保护的字符串id;
@列(name=“name”,nullable=false)
受保护的字符串名称;
//不同性质
}
@存储库
公共接口公司存储库
扩展JpaRepository、JpaSpecificationExecutor{}
编辑 我不认为它很优雅,但这一款很管用,有人能帮我做得更优雅一点吗

@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(); ```

@存储库
公共接口公司存储库
扩展JpaRepository、JpaSpecificationExecutor{
@质疑(
价值观=
“从投标人配置b、本机版本n、公司c中选择c.id作为id、c.name作为名称,其中…”,
nativeQuery=true)
对象[][]GetDefaultBudders()```

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

@Repository
public interface CompanyRepository
    extends JpaRepository<Company, Long>, JpaSpecificationExecutor<Company>{
    @Query(nativeQuery = true)
  List<DefaultBuyerDTO> getDefaultBuyers();
}
@存储库
公共接口公司存储库
扩展JpaRepository、JpaSpecificationExecutor{
@查询(nativeQuery=true)
列出getDefaultBudders();
}
有关更多信息,请参阅