我有三张桌子1)学生2)游戏和3)student_game。这里studentid
是学生表的主键,gameid
是游戏表的主键。关联表有四列1) uuid 2) studentid 3) gameid 4) gametype
。
我正在使用spring数据jpa,所以我的学生实体类的关系如下,
@OneToMany(fetch = FetchType.EAGER)
@JoinTable(name = "student_game", joinColumns = @JoinColumn(name = "studentid"), inverseJoinColumns = @JoinColumn(name = "gameid"))
private Set<Game> GameSet;
游戏实体具有以下关系,
@OneToMany(fetch = FetchType.EAGER)
@JoinTable(name = "student_game", joinColumns = @JoinColumn(name = "gameid"), inverseJoinColumns = @JoinColumn(name = "studentid"))
private Set<Student> studentSet;
在我的业务层,我可以使用以下逻辑获取相应学生的游戏名称集,
Student s = studentRepository.findOne(1L);
Set<Game> games= dd.getGamesSet();
games.forEach(game-> System.out.println(game.getGameId() + " : " + game.getGameName()));
现在我的问题是,
我需要通过将输入作为学生ID传递来从关联表(student_game)中获取gameType列值。
如何获取关联列值?
请建议获取关联表列值的最佳方法。
答案 0 :(得分:2)
您的映射错误:
您需要做的是将student_game表映射为另一个实体。我们称之为Play。然后,Play有一个gameType,field,一个User有多个Plays;一场比赛有多场比赛。当然,您可以将这两个OneToMany关联双向化。