Hey so I have a many to many relationship between two tables, Knights and Quests.
I want to write JPQL query where I get quests with id of 1 from knights of id 1 as well, later on I will change it to quest status, but for now I want to make it work:
@Query("select k.quests from Knight k join k.quests q where k.id=1 and q.id=1")
Collection<Quest> findDoneStories();
It kinda works, because it gives me quests from knight with id 1, but it gives me all quests rather than only one quest with id 1.
@Entity
@Table(name = "knights")
public class Knight {
@Id
@Column(name = "id")
int id;
@Column
String name;
@Column(name = "status")
@Enumerated(EnumType.STRING)
private KnightEnum status;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "knights_quests", joinColumns = @JoinColumn(name = "id_knights"),
inverseJoinColumns = @JoinColumn(name = "id_quest"))
List < Quest > stories;
}
@Entity
@Table(name = "quests")
public class Quest {
@Id
@Column(name = "id")
int id;
@Column
String name;
@Column(name = "description")
String description;
@Column(name = "status")
@Enumerated(EnumType.STRING)
QuestEnum status;
@Column(name = "story_points")
int storyPoints;
@ManyToMany(mappedBy = "stories", fetch = FetchType.EAGER)
List < Sprint > knights;
}