春季 JPA。如何从 @Query(nativeQuery = true) 映射到 POJO

App*_*ler 3 java spring spring-data-jpa

有疑问,就这样吧

select 1 "colName"
Run Code Online (Sandbox Code Playgroud)

我想使用 Spring Data JPA 将结果映射到 POJO 类型。

因此,图片是:

public interface MyAwesomeSuperInterface extends CrudRepository {
    @Query(value = "select 1 \"colName\"", nativeQuery = true)
    List<POJO> something();
}
Run Code Online (Sandbox Code Playgroud)

问题是如何将其映射到POJO.class

按照我认为我会得到的常见建议:

  1. 不,我不想将其更改为 JSQL 并执行“新 POJO”。
  2. 为什么?因为我有一个复杂的sql查询,它无法反映到JSQL中。
  3. 不,我不会提出疑问。我只想知道如何使用将上面的示例映射到 POJO Spring Data。谢谢

Moh*_*eem 5

您可以将 DTO 投影与本机查询结合使用:

// Projection Interface
public interface UserProjection {
    String getName();
    String getEmail();
    Integer getId();
    String getComment();
}

public interface UserRepository extends CrudRepository<User, Integer> {
    @Query(value = "select  u.name, u.email, c.comment from User u join 
                    Comment c on u.id = c.user_id where u.id in :ids", nativeQuery = true)
        List<UserProjection> getUserInterface(List<Integer> ids);
    }
Run Code Online (Sandbox Code Playgroud)

这是我最近尝试使用 DTO 投影的一个示例。这将简单地将本机查询的结果映射到 UserProjection。有关更多信息,请阅读:Spring Data JPA Projection 支持本机查询