Spring Data - Как объединить 3 объекта (таблицы), когда все они ссылаются друг на друга - PullRequest
0 голосов
/ 21 января 2019

Мне нужна сильная модель данных для моих нужд.У меня есть 3 объекта, все они ссылаются друг на друга.Это «игры», «платформы», «категории».Одна игра может быть во многих категориях, а также может быть на многих платформах.Одна категория может содержать много игр и может быть на многих платформах.Одна платформа может иметь много игр и категорий.Все отношения @ ManyToMany.

Я пытался использовать хэш-карту для отображения этих отношений в отношении сущностей.

Game.java

@JoinTable(name = "GAME_PLATFORM_CATEGORY",
            joinColumns = @JoinColumn(name = "GAME_ID"),
            inverseJoinColumns = @JoinColumn(name = "CATEGORY_ID")) 
@MapKeyJoinColumn(name = "PLATFORM_ID")
@ElementCollection
private Map<Platform, Category> categoriesByPlatform = new HashMap<>();

Category.java

@JoinTable(name = "GAME_PLATFORM_CATEGORY",
        joinColumns = @JoinColumn(name = "CATEGORY_ID"),
        inverseJoinColumns = @JoinColumn(name = "PLATFORM_ID")) 
@MapKeyJoinColumn(name = "GAME_ID") 
@ElementCollection
@JsonIgnore
private Map<Game, Platform> platformsByGame = new HashMap<>();

Platform.java

@JoinTable(name = "GAME_PLATFORM_CATEGORY",
        joinColumns = @JoinColumn(name = "PLATFORM_ID"),
        inverseJoinColumns = @JoinColumn(name = "GAME_ID"))
@MapKeyJoinColumn(name = "CATEGORY_ID")
@ElementCollection
@JsonIgnore
private Map<Category, Game> gamesByCategory = new HashMap<>();

Добавить запрос на игру

{
    "blockLink": true,
    "categoriesByPlatform" : {
       1:1
     },
    "descriptions": [
    ],
    "gameLink": "string",
    "name": "string",
    "url": "string"
}   

Я ожидал, что на каждом экземпляре объекта будут ссылки на объекты в картах.Но когда я пытаюсь добавить игру с запросом выше, я получаю HTTP 415. Как мне решить эту проблему?Или мой подход полностью ложный?

...