微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JQPL自定义查询,无法返回@ManyToMany中的对象列表

如何解决JQPL自定义查询,无法返回@ManyToMany中的对象列表

我有2个模型和@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);

我不确定我是否要按照正确的方式进行操作。我想检索与用户模型上的以下列表数组中的每个用户对象关联的每个图片对象。任何想法将不胜感激。

解决方法

以下为您工作吗?

@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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。