【发布时间】:2018-06-06 20:38:26
【问题描述】:
我有一个实体电影,然后是个人实体。 Movie 与 Person 具有多对多关系:一个是演员,另一个是制作,另一个是导演。
所以我的问题是一个人,我如何才能获得他表演、制作和导演的电影。
//人物类:
@Entity
public class Person implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@JsonView(Views.Private.class)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idPerson;
private String name;
private String surnames;
private boolean isActor;
private boolean isDirector;
private boolean isProducer;
@ManyToMany(mappedBy = "casting")
private Set<Movie> moviesCasting = new HashSet<>();
@ManyToMany(mappedBy = "movieDirection")
private Set<Movie> movieDirection = new HashSet<>();
@ManyToMany(mappedBy = "movieProduction")
private Set<Movie> movieProduction = new HashSet<>();
//电影类
@Entity
public class Movie implements Serializable {
private static final long serialVersionUID = 1L;
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "casting_movie",
joinColumns = @JoinColumn(name = "id"),
inverseJoinColumns = @JoinColumn(name = "idPerson")
)
private Set<Person> casting = new HashSet<>();
public Set<Person> getCasting() {
casting.size();
return casting;
}
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "production_movie",
joinColumns = @JoinColumn(name = "id"),
inverseJoinColumns = @JoinColumn(name = "idPerson")
)
private Set<Person> movieProduction = new HashSet<>();
public Set<Person> getMovieProduction() {
movieProduction.size();
return movieProduction;
}
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "direction_movie",
joinColumns = @JoinColumn(name = "id"),
inverseJoinColumns = @JoinColumn(name = "idPerson")
)
private Set<Person> movieDirection = new HashSet<>();
getters and setters(...)
当我想获取有关某个人的信息时,我收到错误:未能延迟初始化角色 Movies.casting 的集合”
如果我给一个人,我想获得每个“电影”,我必须创建双向的多对多关系?
【问题讨论】:
标签: java hibernate jpa lazy-loading