java—如何在SpringBoot中使用另一个表的外键从一个表中获取值?

kb5ga3dv  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(405)

我有两个表:一个是users表,另一个是posts表。users表存储用户信息,posts表存储相应用户的相关post,所以用户id现在是posts表中的外键。
在user.java中

@OneToMany(mappedBy = "user")
private List<Post> posts;

在post.java中

@ManyToOne()
@JoinColumn( name = "user_id")
private User user;

在这里,一切都很顺利,表的结构和预期的一样。
现在,当我点击一个特定的端点,“/posts”时,我需要从posts表中检索所有的post,但这次不是用户id而是用户表中该id对应的用户名。如何做到这一点?
检索所有帖子的端点(postcontroller.java)。

@GetMapping("/posts")
public String getPosts(Model model) {
    List<Post> postList = postService.getPosts();

    model.addAttribute("posts", postList);

    return "Post";
}

邮政服务.java

public List<Post> getPosts() {
    return postRepository.findAllByOrderByIdDesc();
}

我正在使用thymeleaf检索post.html中的帖子。
任何有关这方面的信息都会有帮助。谢谢:)

uubf1zoe

uubf1zoe1#

我不确定是否有一种默认的方法可以通过存储库来实现这一点,但这里是如何使用hql实现的
添加一个名为 getPostsByUsername 在存储库中这样定义

@Query("SELECT p from POSTS p inner join p.user u where u.username=?1")
public List<Post> getPostsByUsername(String username);

请注意 u.username 这个 username 是users表中username字段的名称,而不是数据库中的实际列。

相关问题