【发布时间】:2020-05-10 06:03:12
【问题描述】:
我有玩家和游戏实体,我试图为每个玩家获取他玩过的所有游戏以及他回答了多少正确答案,但答案存储在名为 game_playeranswers 的第三个表中(它是一个集合)所以我必须选择它并计算正确的答案。 game_playeranswers 包含三列 game_gameid、playeranswers 和 qid(问题 id)。
我试过这个来获取游戏玩法和答案集合,它返回了 0 行,但 X 玩了 1 场比赛。
SELECT KEY(m), VALUE(m) FROM Game g JOIN g.playerAnswers m join g.player p where p.userName ='X'"
游戏实体如下
@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
}
播放器如下
@Entity
@Table()
public class Player {
public Player() {
}
@Id
private String userName;
@OneToMany(mappedBy = "player")
private List<Game> games = new ArrayList<>();
//Getters and Setters
}
【问题讨论】:
-
您的应用中是否使用了 Spring 数据?
-
不,我没有使用它