Spring boot 将结果集映射到非实体Spring数据Jpa
我有一个Spring批处理应用程序,需要从4个表中进行选择。问题是,我不能使用关系,将编写Enricher来选择完整数据 目前我有几个问题: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。这对我来说是个问题,因为我的数据不适合这样做 也许有人会给我一些建议,
@SqlResultSetMapping
的示例。我正在寻找自动映射(可能是JPA,而不是Spring数据)。我可以用结果精确地生成列名,但它不起作用@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后跟类的完全限定类名