Spring boot 将结果集映射到非实体Spring数据Jpa

Spring boot 将结果集映射到非实体Spring数据Jpa,spring-boot,jpa,spring-data-jpa,Spring Boot,Jpa,Spring Data Jpa,我有一个Spring批处理应用程序,需要从4个表中进行选择。问题是,我不能使用关系,将编写Enricher来选择完整数据 目前我有几个问题: 是否可以用简单的方式从JpaRepository映射非实体(POJO)。我看到了@SqlResultSetMapping的示例。我正在寻找自动映射(可能是JPA,而不是Spring数据)。我可以用结果精确地生成列名,但它不起作用 将POJO标记为实体没有问题,但存在问题。实体需要@Id。这对我来说是个问题,因为我的数据不适合这样做 也许有人会给我一些建议,

我有一个Spring批处理应用程序,需要从4个表中进行选择。问题是,我不能使用关系,将编写Enricher来选择完整数据

目前我有几个问题:

  • 是否可以用简单的方式从JpaRepository映射非实体(POJO)。我看到了
    @SqlResultSetMapping
    的示例。我正在寻找自动映射(可能是JPA,而不是Spring数据)。我可以用结果精确地生成列名,但它不起作用
  • 将POJO标记为实体没有问题,但存在问题。实体需要
    @Id
    。这对我来说是个问题,因为我的数据不适合这样做
  • 也许有人会给我一些建议,哪一个更好用。 我的完美目的就是做这样的事情

    @Query(value = "SELECT id as main_id FROM table where name = ?1",
          nativeQuery = true)
      List<Data> getAll(String name);
    And get objects mapped to my POJO.
    
    @Query(value=“从name=?1的表中选择id作为主id”,
    nativeQuery=true)
    列表getAll(字符串名称);
    并将对象映射到我的POJO。
    
    您可以使用JPA构造函数表达式:

    例如:

    public class CallStatistics {
    
        private final long count;
        private final long total;
        private final int min;
        private final int max;
        private final double avg;
    
        public CallStatistics(long count, long total, int min, int max, double avg) {
            this.count = count;
            this.total = total;
            this.min = min;
            this.max = max;
            this.avg = avg;
        }
    
        //Getters and setters omitted for brevity
    }
    
    CallStatistics callStatistics = entityManager.createQuery(
        "select new org.hibernate.userguide.hql.CallStatistics(" +
        "   count(c), " +
        "   sum(c.duration), " +
        "   min(c.duration), " +
        "   max(c.duration), " +
        "   avg(c.duration)" +
        ")  " +
        "from Call c ", CallStatistics.class)
    .getSingleResult();
    
    重要的部分是:

    • 必须有一个具有匹配构造函数的类
    • 必须使用NEW后跟类的完全限定类名
    发件人: