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 (将#修改为@)