【发布时间】:2019-07-30 23:01:11
【问题描述】:
我正在尝试将 ManyToMany 实体添加到我的应用程序中。我创建了实体但无法实现它。
演员类
@Entity
@Table(name = "actor")
public class Actor {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(nullable = false, name = "actor_name")
private String actorName;
@ManyToMany(mappedBy = "actor", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Movie> movie = new HashSet<Movie>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getActorName() { return actorName; }
public void setActorName(String actorName) {
this.actorName = actorName;
}
public Set<Movie> getMovie() {
return movie;
}
public void setMovie(Set<Movie> movie) {
this.movie = movie;
}
}
在电影课我有
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "movie_actor",
joinColumns = {@JoinColumn(name = "movie_id")},
inverseJoinColumns = {@JoinColumn(name = "actor_id")}
)
Set<Actor> actor = new HashSet<Actor>();
........................
public Set<Actor> getActor () {
return actor;
}
public void setActor(Set<Actor> actor){
this.actor = actor;
}
我像这样创建了我的实体,但在 MovieService;
Actor actor = ActorRepository.findByActorName(movie.getActor().getActorName());
movie.setActor(actor);
这部分给了我错误。 movie.getActor().getActorName() 方法找不到。我需要看哪里?在 IDE 中,它还说从未使用方法 getActorName 和 setActorName。我还添加了我的 ActorRepository 和 ActorService 来仔细研究这个问题。
ActorRepository
public interface ActorRepository extends JpaRepository<Actor, Integer> {
Set<Actor> findByActorName(String actorName);
}
ActorService
@Service
public class ActorService {
private ActorRepository actorRepository;
@Autowired
public ActorService(ActorRepository actorRepository) {
this.actorRepository = actorRepository;
}
public List<Actor> getAllActor() {
return actorRepository.findAll();
}
}
添加 ManyToMany 后,我使用的是 OneToMany 实体。服务适用于 OneToMany。我如何将它们用于多对多?我需要在我的电影中添加多个演员。我找不到用于 ManyToMany 实现的 MVC 项目。
【问题讨论】:
标签: java spring-mvc jpa