Я пытаюсь реализовать довольно сложное отображение в JPA. Мне нужно что-то похожее на этот пример. Существует несколько видов писателей и несколько видов писаний.
Каждое письмо должно иметь постоянное поле автора. Неважно, динамический тип автора. Вот почему я установил статический абстрактный тип.
Однако автор должен иметь два списка, в которых указаны романы и стихи, которые написал каждый.
Я получаю сообщения о том, что не могу использовать MappedSuperClass в качестве цели для сохраняемого поля. Кто-нибудь знает, как выполнить то, что я пытаюсь сделать?
Я также хочу, чтобы писатель владел этими двунаправленными отношениями. так что на карте должно быть на стороне романа или стихотворения. Однако, похоже, что сопоставленный может быть только на стороне OneToMany .... Это не похоже на странный случай, когда одна вещь владеет многими вещами ... почему я не могу сделать это ...
Большое спасибо за помощь
@MappedSuperclass
@Access(AccessType.PROPERTY)
public abstract class AbstractWriter implements Serializable{
private Long id;
private String name;
private String email;
private ArrayList<Novel> novels;
private ArrayList<Poem> poems;
@OneToMany(mappedBy="author")
public ArrayList<Novel> getNovels() {
return novels;
}
public void setNovels(ArrayList<Novel> novels) {
this.novels = novels;
}
@OneToMany(mappedBy="author")
public ArrayList<Poems> getPoems() {
return poems;
}
public void setPoems(ArrayList<Poem> poems) {
this.poems = poems;
}
@Column(nullable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Id @GeneratedValue(strategy= GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
@Entity
public class ProfessionalWriter extends AbstractWriter {
}
@Entity
public class StudentWriter extends AbstractWriter {
}
@MappedSuperclass
public abstract class AbstractWriting implements Serializable{
private Long id;
private String title;
private AbstractWriter author;
private byte[] words;
@ManyToOne
public AbstractWriter getAuthor() {
return author;
}
public void setAuthor(AbstractWriter author) {
this.author = author;
}
@Id @GeneratedValue(strategy= GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Lob
public byte[] getWords() {
return words;
}
public void setWords(byte[] words) {
this.words = words;
}
@Column(nullable=false)
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
@Entity
public class Novel extends AbstractWriting {
}
@Entity
public class Poem extends AbstractWriting {
}