我有一个名为company的POJO,它映射到名为company的数据库表 我有一个只有两个字段的 native 查询(由于遗留原因,公司有很多我想删除的急切映射)
系统正在使用 spring 数据 我想映射为 native 查询并仅将这两个标量填充到我的公司列表中 我该如何使用 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(); ```
最佳答案
显然 Spring 数据中存在一个问题,解决方法如下:
@Repository
public interface CompanyRepository
extends JpaRepository<Company, Long>, JpaSpecificationExecutor<Company>{
@Query(nativeQuery = true)
List<DefaultBuyerDTO> getDefaultBuyers();
}
关于java - Spring 数据存储库在未映射的 POJO 上具有 native 命名查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59856355/