问题描述
我有一个名为“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 的用户。
我试图在 Stack Overflow 和互联网上的其他资源中找到一些有用的资源,不幸的是我无法找到解决我的问题的有用资源。
您能否给我一些建议,如何在 Spring Data JPA 或其他来源的一些链接中将此查询实现为本机查询,我可以在其中找到对我的问题有用的资源。
非常感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)