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

Spring JPA 数据:查询 ElementCollection

如何解决Spring JPA 数据:查询 ElementCollection

我有一个名为“UserInterest”的类。它遵循以下定义:

@Table(name = "user_interests")
public class UserInterest {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "user_interest_pk_generator")
  @SequenceGenerator(name = "user_interest_pk_generator",sequenceName = "user_interest_id_seq",allocationSize = 1)
  @Column(name = "user_interest_id")
  private int userInterestId;

  @Column(name = "user_id",nullable = false)
  private int userId;

  @ElementCollection
  @CollectionTable(name = "user_interest_ids")
  @Column(name = "interest_id")
  private List<Integer> interests;
}

JPA 自动创建嵌入表 user_interest_ids,即集合表。

这个类工作正常,用户兴趣被正确保存。

现在我需要根据特定兴趣列表过滤用户

假设我有以下 user_interest 列表:

enter image description here

CollectionTable 看起来像这样:

enter image description here

我想找到拥有 interest id 3用户。在 Postgresql 的 pgAdmin 面板中,过滤 interest_id =3 的查询返回此表:

enter image description here

我尝试在 Spring Data JPA 中通过内部联接查询在本机查询中实现此过滤器查询

@Query(value = "select user_id from user_interests inner join user_interest_ids on interest_id = ?1",nativeQuery = true)
Set<Integer> findUsersByInterest(int interestID);

这个内连接查询返回所有用户,而不仅仅是兴趣 ID 为 3 的用户

我试图在 Stack Overflow 和互联网上的其他资源中找到一些有用的资源,不幸的是我无法找到解决我的问题的有用资源。

您能否给我一些建议,如何在 Spring Data JPA 或其他来源的一些链接中将此查询实现为本机查询,我可以在其中找到对我的问题有用的资源。

非常感谢您的帮助。

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