如何使用JPA查询多对多元素

时间:2019-05-13 15:16:33

标签: hibernate jpa spring-data-jpa

我想通过父实体ID查询我的ManyToMany关系。

我有一个用户,我希望能收到我的用户标记为收藏的所有帖子。 我有两个实体UserEntityPostEntity,还有一个joinTable user_post_favourite

@Entity
class UserEntity {@Column
String name;

@OneToMany(cascade = { 
            CascadeType.PERSIST, 
            CascadeType.MERGE })
@JoinTable(name = "user_post_favourite", 
            joinColumns = @JoinColumn(name = "user_id"), 
            inverseJoinColumns = @JoinColumn(name = 
"post_id"))
private List<PostEntity> postFavourites;
}

我的仓库:

public interface UserRepository extends JpaRepository<UserEntity, Long> {
    List<PostEntity> findAllPostFavourites_PostId(Long id);
}

使用上面的本机查询不起作用。不确定它是否应该那样工作。 当然,我可以定义一个特定的服务和仓库来访问联接表,但是如果可能的话,我想避免使用它。

1 个答案:

答案 0 :(得分:0)

只需创建一个简单的查询:

Select p from User u join u.postFavourites p where u.Id = :userId;