These are my classes:
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
@Entity
public class Actor implements Serializable {
private long id;
private String name;
private String firstname;
private Set<Film> films = new HashSet<Film>();
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "actors", targetEntity = Film.class)
public Set<Film> getFilms() {
return films;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Id
@Column(name = "ACTOR_ID")
@GeneratedValue(strategy = GenerationType.TABLE)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public void setFilms(Set<Film> films) {
this.films = films;
}
}
AND
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
@Entity
public class Film implements Serializable{
private long id;
@Column(name = "title")
private String title;
@Column(name = "nationality")
private String nationality;
@Column(name = "year")
private int year;
private Set<Actor> actors = new HashSet<Actor>();
@ManyToMany(targetEntity = Actor.class, cascade = { CascadeType.PERSIST,
CascadeType.MERGE })
@JoinTable(name = "FILM_ACTOR", joinColumns = { @JoinColumn(name = "FILM_ID") }, inverseJoinColumns = { @JoinColumn(name = "ACTOR_ID") })
public Set<Actor> getActors() {
return actors;
}
public void setActors(Set<Actor> actors) {
this.actors = actors;
}
@Id
@Column(name = "FILM_ID")
@GeneratedValue(strategy = GenerationType.TABLE)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNationality() {
return nationality;
}
public void setNationality(String nationality) {
this.nationality = nationality;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}
I have read the documentation on this page:
http://www.hibernate.org/hib_docs/annot ... ml_single/
And I have this problem:
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: Film.actors[Actor]
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:252)