所以我正在阅读有关预测的春季文档:
https://docs.spring.io/spring-data/jpa/reference/repositories/projections.html
当我看到这张纸条时
在存储库中声明覆盖基本方法的方法(例如在 CrudRepository、特定于商店的存储库接口或 Simple…Repository 中声明)会导致对基本方法的调用,无论声明的返回类型如何。确保使用兼容的返回类型,因为基方法不能用于投影。一些商店模块支持 @Query 注释,将重写的基本方法转换为查询方法,然后可用于返回投影。
问题就在它上面,他们正在使用它与基本方法
interface PersonRepository extends Repository<Person, UUID> {
Collection<NamesOnly> findByLastname(String lastname);}
ps:我知道投影会改变发送到数据库的 sql 查询以仅检索我们想要的列,这是否意味着如果我们将投影与基本方法一起使用,它将获取对象的所有列,然后将其投影到 java 中还是什么?
我进行了搜索,但没有找到任何可以提供帮助的资源,因为困惑来自文档本身
如果需要自定义重写方法返回的数据,可以使用@Query注解创建自定义查询方法。 @Query 注释允许您指定将执行以检索所需数据的 JPQL 或本机 SQL 查询。 这是如何做到这一点的示例
@Repository
public interface MyEntityRepository extends CrudRepository<MyEntity,
Long> {
@Query("SELECT e.id, e.name FROM MyEntity e WHERE e.id = ?1")
MyEntityProjection findByIdProjection(Long id);
}