Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 使用@MapKeyJoinColumn映射三重联接表_Jpa_One To Many_Jointable_Mapkeyjoincolumn - Fatal编程技术网

Jpa 使用@MapKeyJoinColumn映射三重联接表

Jpa 使用@MapKeyJoinColumn映射三重联接表,jpa,one-to-many,jointable,mapkeyjoincolumn,Jpa,One To Many,Jointable,Mapkeyjoincolumn,我有三个实体,分别是:“电影”、“人”和“角色”,一个人在电影中有一定的角色 在我的数据库中,我有这3个实体,要链接它们,需要一个表: 演员阵容(id\u电影、id\u人物、id\u角色)所有主要角色,因为一个人可以是例如制片人和演员 到目前为止,在我的实体电影中,我写了这个链接: @OneToMany(cascade = CascadeType.ALL) @JoinTable(name = "distribution", joinColumns = @JoinColumn(na

我有三个实体,分别是:“电影”、“人”和“角色”,一个人在电影中有一定的角色

在我的数据库中,我有这3个实体,要链接它们,需要一个表: 演员阵容(id\u电影、id\u人物、id\u角色)所有主要角色,因为一个人可以是例如制片人和演员

到目前为止,在我的实体电影中,我写了这个链接:

@OneToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "distribution",
    joinColumns = @JoinColumn(name = "id_movie"),
    inverseJoinColumns = @JoinColumn(name = "id_role"))
@MapKeyJoinColumn(name = "id_pers")
private Map<Person,Role> list_cast = new HashMap<Person,Role>();
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name=“distribution”,
joinColumns=@JoinColumn(name=“id\u movie”),
inverseJoinColumns=@JoinColumn(name=“id\u角色”))
@MapKeyJoinColumn(name=“id\u pers”)
私有映射列表_cast=new HashMap();
但它当然不起作用,因为地图中的键是唯一的。
所以list_cast[person]给了我唯一的最后一个角色。

我想我必须保留它,因为我们将来需要添加角色,否则我会制作一个表,比如Actressional,你想要的是私有地图角色;不幸的是,JPA不支持这一点。据我所知,你将需要映射为一个集合或任何东西,并在加载后转换为内存中的映射。好的,所以为了保持这个数据库设计,我必须删除JPA?