我有3张桌子:
person (person_id, person_name),
game (game_id, game_name)
和链接表
play(person_id, game_id, score).
使用ActiveJdbc,我使用了many2many注释,它适用于1人的所有游戏
List<Game> games = person.get(Game.class, "person_id = ?", personId);
我的问题是如何获得价值“得分”?
我试过game.getScore()
,但显然没有用
编辑: 我想要一个人的完整游戏列表。这是我想要的结果
game1 | 21
game2 | 33
game3 | 44
在SQL中应该是这样的:
select game.name, play.score
from game join play on (game.game_id = play.game_id)
join person on (game.person_id = person.person_id)
where person_id = 1;
答案 0 :(得分:1)
这可能不止一种方法,但这里是 a 方式。您可以将多对多关系视为两个一对多关系,其中Play是Person和Game两者的孩子。然后你从一个不同的角度接近:
List<Play> plays = Play.where("person_id = ?", 1).include(Person.class, Game.class);
通过使用include()
,您还可以优化并运行更少的查询:http://javalite.io/lazy_and_eager。
根据您的查询条件,您可能只有一个游戏:
Game game = plays.get(0).parent(Game.class);
Person = plays.get(0).parent(Person.class);
如果当然,你可以获得你的分数:
int score = plays.get(0).getScore();
希望它有所帮助!