我有以下名为“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
列表:
CollectionTable 看起来像这样:
我想找到拥有interest id 3
. 在 PostgreSQL 的 pgAdmin 面板中,过滤器interest_id =
3 的查询返回此表:
我尝试在 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 的用户。
我试图在堆栈溢出和互联网上的其他来源中找到一些有用的资源,不幸的是我无法找到对我的问题有用的资源。
您能否给我一些建议,如何将此查询实现为 Spring Data JPA 中的本机查询或其他来源的一些链接,我可以在其中找到对我的问题有用的资源。
我真的很感谢你的帮助。