gpt4 book ai didi

java - Spring JPA 投影 findAll

转载 作者:IT老高 更新时间:2023-10-28 13:58:58 27 4
gpt4 key购买 nike

是否可以对 JPARepository 使用“findAll”来返回一个集合/投影列表?示例:

@Entity
public class Login {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "native")
@GenericGenerator(name = "native", strategy = "native")
private Integer id;

private String name;

private String pass;

(...)

}

public interface LoginProjection {
public String getName();
}

@Repository
public interface LoginRepository extends JpaRepository<Login, Long> {
Login findByName(String name);

@Query(value = "SELECT name FROM login", nativeQuery = true)
List<LoginProjection> findAllLoginProjection();
}

使用@Query 就可以了!但是无法使用

 List<LoginProjection> findAll();

因为 LoginProjection 它没有扩展 T(登录)。

我在想是否可以为 findAll 提供一个“别名”,比如 findAllXYZ,它与 findAll 做同样的事情。使用过滤器也可以,但我不想使用它们:

 List<LoginProjection> findAllByName(String name);

我的主要目标是这样的:

@Repository
public interface LoginRepository extends JpaRepository<Login, Long> {
Login findByName(String name);

List<Login> findAll();

List<LoginProjection> findAllLoginProjection();
}

这很简单,并且使用“零 @Query”

最佳答案

并向存储库添加一个方法:

List<LoginProjection> findAllProjectedBy();

方法名称可以简化为 findBy() 以匹配 https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections 处的文档示例

关于java - Spring JPA 投影 findAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50879431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com