我想使用以下 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") 注释的问号,但它不起作用。有谁知道更多吗?
解决方案非常简单。您只需要在映射方法的 ProfileController 类中添加 PathParameter 注释:
@GetMapping("/api/{id}")
public String getPage(**@PathVariable** Long id, Model model){
//inner Logic
return "page";
}