У меня есть игроки и игровые объекты, и я пытаюсь получить для каждого игрока все игры, в которые он играл, а также сколько правильных ответов он ответил, но ответы хранятся в третьей таблице с именем game_playeranswers (это коллекция) поэтому я должен выбрать его и посчитать правильные ответы. у game_playeranswers есть три столбца game_gameid, playeranswers и qid (id вопроса).
Я пытался это сделать, чтобы получить количество игроков и набор ответов, он возвратил 0 строк, но Х сыграл в 1 игру.
SELECT KEY(m), VALUE(m) FROM Game g JOIN g.playerAnswers m join g.player p where p.userName ='X'"
Сущность Game выглядит следующим образом
@Entity
@Table()
public class Game {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int gameID;
@ElementCollection
@CollectionTable(joinColumns = @JoinColumn())
@MapKeyJoinColumn(name = "QID")
@Column()
public Map<TypePatternQuestions.Question, Boolean> playerAnswers = new LinkedHashMap<>();
@ManyToMany
private List<Category> choosenCategories = new ArrayList<>();
@ManyToMany
private List<Question> questions = new ArrayList<>();
@Column()
public Timestamp timestamp;
@Column()
public Timestamp gameStart;
@Column()
public Timestamp gameEnd;
@Column()
private int maxNumberOfQuestions;
@ManyToOne()
private Player player;
//Getters and Setters
}
Player выглядит следующим образом
@Entity
@Table()
public class Player {
public Player() {
}
@Id
private String userName;
@OneToMany(mappedBy = "player")
private List<Game> games = new ArrayList<>();
//Getters and Setters
}