Spring Data JPA投影是否优化了sql?

时间:2018-03-08 05:43:21

标签: spring spring-data-jpa

Spring boot:1.5.10 spring Data JPA:1.11.10

IE MyEntity

 class MyEntity{
     private Long id;
     private String name;
     private Integer age;
    // getter setter
 }

我的我的投影

 interface MyProjection{ String getName() }

MyEntityRepository

 ...
  MyProjection findById(Long Id)
  ...

当我调用findById函数时,生成sql是:

 select myentity0_.id, myentity0_.name,myentity0_.age from MyEntity myentity0_ where ...

为什么还要选择年龄栏?

1 个答案:

答案 0 :(得分:1)

是的,Spring Data JPA应该只选择处理界面投影时所需的特定列。

我刚刚根据您的问题在一个简单的项目中对其进行了测试,并观察到正在执行以下查询:

select myentity0_.name as col_0_0_ from my_entity myentity0_ where myentity0_.id=?

这表明您的应用程序行为有所不同。看看示例项目并将其与您自己的项目进行比较,看看您是否能发现任何差异:https://github.com/roberthunt/spring-data-interface-projection