Spring Data-如何相互引用三个实体(表)

时间:2019-01-21 20:13:58

标签: java spring-boot spring-data-jpa spring-data spring-restcontroller

我需要一个强大的数据模型来满足我的需求。我有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"
}   

我希望每个对象实例中的映射中都有引用的对象。但是,当我尝试使用上面的请求添加游戏时,我得到HTTP415。如何解决此问题?还是我的方法完全错误?

0 个答案:

没有答案