Spring boot JPA - 使用额外的列查询多对多
Posted
技术标签:
【中文标题】Spring boot JPA - 使用额外的列查询多对多【英文标题】:Spring boot JPA - Query Many to Many with extra column 【发布时间】:2021-04-13 12:17:49 【问题描述】:我在我的项目中使用 Spring Boot 作为后端。在数据库(mysql)中,我有一个多对多的关系。实体是:
兴趣,包含字段 id、nameInterest 和 priority 用户,包含字段 ID、电子邮件、年龄、流派、用户名、密码和优先级。 RelUserInterest(表格中间),包含字段用户、兴趣和优先级。利益实体
@Id
@GeneratedValue
private long id;
@NotEmpty
@Column(unique = true)
private String nameInterest;
@OneToMany(mappedBy = "interest", cascade = CascadeType.ALL)
@NotNull
Set<RelUserInterest> priority = new HashSet<>();
用户实体
@Id @GeneratedValue private long id;
@NotNull
@Column (unique = true) private String email;
@NotNull private int age;
@NotNull private String genre;
@NotNull private String userName;
@NotNull private String password;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
@NotNull
Set<RelUserInterest> priority = new HashSet<>();
RelUserInterest 实体
@Id
@ManyToOne
@JoinColumn(name = "user_id", referencedColumnName = "id")
User user;
@Id
@ManyToOne
@JoinColumn(name = "interest_id", referencedColumnName = "id")
Interest interest;
int priority;
我想要什么
我想要一个返回下一个信息的查询:用户感兴趣的列表以及额外的列(在本例中为 priority 列)。 JSON 格式为:
[
interest_id: 1,
name_interest: "Museum",
priority: 5
,
interest_id: 2,
name_interest: "Cathedral",
priority: 6
]
我尝试过的
方法 findBy
我在仓库中试过这个方法:
public interface InterestRepository extends CrudRepository<Interest, Long>
....
List<Interest> findByPriority_user(User user);
但是返回一个包含 name_interest 和 interest_id 的数组
谢谢
【问题讨论】:
【参考方案1】:我和你有完全相同的问题,但没有答案。 我有一个桥接表和一个名为 active 的额外列。 我想查询桥表中active = 1但从不工作的数据结果...... 在这里寻找答案!
【讨论】:
以上是关于Spring boot JPA - 使用额外的列查询多对多的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot Jpa JPQL 选择除特定列之外的列
Spring Boot JPA:将一个实体映射到具有相同列的多个(很多)表