DTO类Spring Boot 3的@Query注解中的参数

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

我想使用以下 DTO 类来投影我的项目中的实体对象,以便根据作为参数给出的 id 值检索与我的个人资料相关的相应信息。

inerface ProfileRepository extends JpaRepository<Profile, Long>{
     //First Option
     @Query("SELECT p FROM Profile p WHERE p.id = ?1")
     Pr_Profile fromEntityToDTO(Long id);
}

这是我的实体和 DTO 类:

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
class Profile{
    private Long id;
    private String login;
    private Strig name;
    private LocalDate birthdate;
}

class Pr_Profile{
    private Long id;
    private String login;
    private LocalDate birthdate;

    public Pr_Profile(int id, String login, LocalDate birthdate){
        this.id = id;
        this.login = login;
        this.birthdate = birthdate;
    }
}     

当我尝试检索给定 id 的配置文件时,我的 Pr_Profile 对象始终保持为空。我尝试了一个数字而不是参数,它起作用了。 之后,我尝试使用 NamedParameter 和 @Param("id") 注释,或者使用带有和不带有 @Param("id") 注释的问号,但它不起作用。有谁知道更多吗?

parameters repository dto projection spring-boot-3
1个回答
0
投票

解决方案非常简单。您只需要在映射方法的 ProfileController 类中添加 PathParameter 注释:

@GetMapping("/api/{id}")
public String getPage(**@PathVariable** Long id, Model model){
  //inner Logic
  return "page";
}
© www.soinside.com 2019 - 2024. All rights reserved.