Мне нужно реализовать стратегию MappedSuperclass. Однако у моего родительского класса есть ассоциации типа «многие ко многим» и «многие к одному». Таким образом, кажется, что каждая таблица, представляющая дочерние классы, должна иметь дубликат связанных с родительскими таблицами классов. Вот мой родительский класс:
@MappedSuperclass
public class Release {
@Id
@Column()
private int id;
@ManyToOne(cascade=CascadeType.REMOVE, fetch = FetchType.EAGER)
@JoinColumn(name = "artistid", nullable = false)
private Artist artist;
@Column()
private int year;
@Column()
private String release_name;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable
(name = "release_genre",
joinColumns = @JoinColumn(name = "release_id"),
inverseJoinColumns = @JoinColumn(name = "genre_id"))
private List<Genre> genres;
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "Covers")
@MapKeyColumn(name = "cover_name")
private Map<Long, String> covers = new HashMap<Long, String>();
...
}
Вот дети и класс с множественной связью с родителем:
@Entity()
@Table
public class Album extends Release {
@Column()
private String type;
...
}
@Entity()
@Table()
public class Single extends Release {
@Column()
private int num_tracks;
...
}
@Entity
@Table()
public class Track {
@Id
@Column()
private int id;
@Column()
private String track_name;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "fk_release_id", nullable = false)
private Release release;
@Column()
private int track_length;
...
}
Для других 3 стратегий все работает нормально. Но возможно ли на самом деле использовать эту стратегию с такой объектной моделью?