Я пытаюсь сделать простую стратегическую игру, основанную на времени ... Это соединение с базой данных: kingdom (OneToMany) -> прогресс, строительство, ресурс, отряд progression, building, resource, troop">
Если я это сделаюthis:
public void updateProgression(Kingdom kingdom) throws TroopNotFoundException, BuildingNotFoundException {
List<ProgressionModel> progressions = kingdom.getKingdomsProgresses();
for (ProgressionModel p : progressions) {
System.out.println(p.getId());
System.out.println(p.getType());
System.out.println(p.getGameObjectId());
System.out.println(p.getProgressKingdom().getId());
if (timeService.timeIsUp(p)) {
progress(p, kingdom);
}
}
}
private void progress(ProgressionModel progressionModel, Kingdom kingdom) throws TroopNotFoundException,
BuildingNotFoundException {
if (progressionModel.getGameObjectId() == null) {
if (progressionModel.getType().equals("TROOP")) {
troopService.createTroop(kingdom);
progressionModelRepository.deleteById(progressionModel.getId());
return;
}
buildingService.createBuilding(progressionModel, kingdom);
System.out.println(progressionModel.getId());
progressionModelRepository.deleteById(progressionModel.getId());
return;
Запросы Hibernate в консоли:
Hibernate: select kingdomspr0_.kingdom_id as kingdom_5_3_0_, kingdomspr0_.id as id1_3_0_, kingdomspr0_.id as id1_3_1_, kingdomspr0_.game_object_id as game_obj2_3_1_, kingdomspr0_.kingdom_id as kingdom_5_3_1_, kingdomspr0_.time_to_progress as time_to_3_3_1_, kingdomspr0_.type as type4_3_1_ from progression kingdomspr0_ where kingdomspr0_.kingdom_id=?
1
FARM
null
1
Hibernate: select kingdomsre0_.kingdom_id as kingdom_7_4_0_, kingdomsre0_.id as id2_4_0_, kingdomsre0_.id as id2_4_1_, kingdomsre0_.amount as amount3_4_1_, kingdomsre0_.resource_per_minute as resource4_4_1_, kingdomsre0_.kingdom_id as kingdom_7_4_1_, kingdomsre0_.type as type5_4_1_, kingdomsre0_.updated_at as updated_6_4_1_, kingdomsre0_.dtype as dtype1_4_1_ from resources kingdomsre0_ where kingdomsre0_.kingdom_id=?
Hibernate: update resources set amount=?, resource_per_minute=?, kingdom_id=?, type=?, updated_at=? where id=?
Hibernate: insert into buildings (hp, kingdom_id, level, type) values (?, ?, ?, 'Farm')
1
Это не удалит прогрессию ...
Но если я позвонюВстроенный в JpaRepository запрос для получения всех прогрессий, принадлежащих королевству, в методе updateProgression:
List<ProgressionModel> progressions = progressionModelRepository.findAllByProgressKingdom(kingdom);
Затем hibernate удаляет прогрессию из таблицы прогрессий (чего я хочу добиться в первом сценарии):
Hibernate: select progressio0_.id as id1_3_, progressio0_.game_object_id as game_obj2_3_, progressio0_.kingdom_id as kingdom_5_3_, progressio0_.time_to_progress as time_to_3_3_, progressio0_.type as type4_3_ from progression progressio0_ where progressio0_.kingdom_id=?
1
FARM
null
1
Hibernate: select kingdomsre0_.kingdom_id as kingdom_7_4_0_, kingdomsre0_.id as id2_4_0_, kingdomsre0_.id as id2_4_1_, kingdomsre0_.amount as amount3_4_1_, kingdomsre0_.resource_per_minute as resource4_4_1_, kingdomsre0_.kingdom_id as kingdom_7_4_1_, kingdomsre0_.type as type5_4_1_, kingdomsre0_.updated_at as updated_6_4_1_, kingdomsre0_.dtype as dtype1_4_1_ from resources kingdomsre0_ where kingdomsre0_.kingdom_id=?
Hibernate: update resources set amount=?, resource_per_minute=?, kingdom_id=?, type=?, updated_at=? where id=?
Hibernate: insert into buildings (hp, kingdom_id, level, type) values (?, ?, ?, 'Farm')
1
Hibernate: delete from progression where id=?
Я не могу разобраться с этой проблемой.Конечно, код работает, если я использую вызов репозитория, чтобы получить прогрессии, принадлежащие королевству, но я действительно не понимаю, почему deleteById ничего не делает, даже если я передаю ему действительный идентификатор.Спасибо за помощь!Я надеюсь, что композиция достаточно хороша, чтобы понять.Это мой первый вопрос о StackOverflow, поэтому, пожалуйста, поразите меня конструктивной критикой.