Имам маса с играчи и друга маса с игри. Между тях има връзка Player----(1..n)[Game] (дефинициите на полетата може да не са напълно правилни):
// Player
@DatabaseField(generatedId = true)
private int id;
@DatabaseField
public String name;
@ForeignCollectionField(
eager = true,
maxEagerLevel = 3)
public ForeignCollection<Game> games;
// Game
@DatabaseField
String title;
@DatabaseField
String playerName;
Бих искал да получа и върна списък с всички игри. Кога режийните позволяват на ormLite да направи избора за ForeignCollection? Или би било по-добре да направите нещо подобно:
final List<Game> allGames = daoGames.getAllGroupedByName();
final List<Player> allPlayers = gameDao.getAll();
final HashMap<String, List<Game>> games = new HashMap<String, List<Game>>();
for (Game currentGame : allGames) {
final String player = currentGame.playerName;
if (games.get(player) == null) {
games.put(player, new ArrayList<Game>());
}
final List<Game> gamesOfPlayer = games.get(player);
gamesOfPlayer.add(currentGame);
}
for (Player player : allPlayers) {
player.games = games.get(player.name);
}
Предполагам, че ormLite ще направи заявка за всеки играч. Дали това е голямо натоварване в сравнение с единия daoGames.getAllGroupedByName() (макар че groupBy дори не е необходим)?