我们可以在 Spring 数据库方法中使用投影吗?

问题描述 投票:0回答:1

所以我正在阅读有关预测的春季文档:

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 中还是什么?

我进行了搜索,但没有找到任何可以提供帮助的资源,因为困惑来自文档本身

spring-boot hibernate spring-data-jpa spring-data spring-projections
1个回答
0
投票

如果需要自定义重写方法返回的数据,可以使用@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);
}
© www.soinside.com 2019 - 2024. All rights reserved.