JQPL自定义查询,在@ManyToMany中返回对象列表时遇到问题



我有两个模型和@ManyToMany表。用户表和图片表。用户表中有一个其他用户的列表,后面是特定的用户。用户具有与每个图片的@OneToMany关联。

用户

@OneToMany(mappedBy="user", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private List<Picture> pics;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name="follows",
joinColumns = @JoinColumn(name="user_id"),
inverseJoinColumns = @JoinColumn(name = "following_id") 
)
private List<User> following;

图片

private String image_url;
private String description;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="user_id")
private User user;

获取与所有用户相关联的所有图片的SQL查询(在User.following中(是:

SELECT * FROM `pictures` picture
WHERE `user_id` = '1' OR `user_id` IN (
SELECT `following_id` FROM `follows` WHERE `user_id`= 1
)

但是下表并不是它自己的实体,我正在绞尽脑汁地研究如何将SQL转换为自定义查询的HQL。我仍然无法弄清楚,这是我最接近的一次

@Query(value="SELECT p FROM Picture p WHERE p.user = :user OR p.user IN(SELECT p.followers FROM p.followers WHERE user = :user)")
List<Picture> findByPictureFollower(@Param("user") User user);

我不确定我的做法是否正确。我想在用户模型的Following List Array中检索与每个用户对象关联的每个图片对象。任何想法都将不胜感激。

以下内容适用于您吗?

@Query(value="SELECT p FROM Picture p WHERE p.user = :user OR p.user IN(SELECT f FROM User u JOIN p.followers f WHERE u = :user)")
List<Picture> findByPictureFollower(@Param("user") User user);

相关内容

  • 没有找到相关文章

最新更新