java 个性化查询JPA

exdqitrt  于 2023-01-24  发布在  Java
关注(0)|答案(1)|浏览(144)

我正在创建一个项目管理器,用户可以在其中拥有多个项目,但一个项目只能属于一个用户(@OnetoMany)。我设法建立了关系和所有内容,问题是我想创建一个自定义查询,仅显示一个用户的所有项目。您能告诉我 请问如何进行此客户查询?

    • 用户类中的关系**
@OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "id_user") private List<Project> projects = new ArrayList<>();
    • 项目控制器类**
@GetMapping("/listar/{userId}") public ResponseEntity<List<Project>> listProjectsByUser(@PathVariable Long userId) { return ResponseEntity.ok(projectService.listProjectsByUser(userId));}
    • 项目服务类**
public List<Project> listProjectsByUser(Long userId) { return projectRepository.findProjectByUser(userId);}

最后,在ProjectRepository类中创建@Query

@Query("SELECT p FROM Project p WHERE p.id = :id_user") List<Project> findProjectByUser(Long id);

这是由JPA生成的Projects表,请注意,我正尝试使用列"id_user"执行"SELECT"操作

我尝试进行此查询,但它给出以下错误
未绑定命名参数:id_user;嵌套异常为组织休眠。查询异常:未绑定命名参数:id_用户

t98cgbkg

t98cgbkg1#

你可以试试这个方法
替换id_用户-〉id

@Query("SELECT p FROM Project p WHERE p.id = :id") 
List<Project> findProjectByUser(Long id);

或替换id-〉id_user(如果需要)

@Query("SELECT p FROM Project p WHERE p.id = :id_user") 
List<Project> findProjectByUser(Long id_user);

我希望能成功

相关问题