Стратегия @MappedSuperclass с ассоциациями в родительском классе - PullRequest
0 голосов
/ 17 апреля 2020

Мне нужно реализовать стратегию 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 стратегий все работает нормально. Но возможно ли на самом деле использовать эту стратегию с такой объектной моделью?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...