Я хотел бы смоделировать отношения 1: n между классом Player и Hero. Чтобы было ясно: у игрока должно быть несколько героев, в то время как герой принадлежит только одному игроку.
Соответствующий отрывок (извлеченные методы получения, установки и несоответствующие свойства) моего класса игрока выглядит так:
@Entity
@SequenceGenerator(name = "player_id", initialValue = 1, allocationSize = 1)
@Table(name = "players")
public class Player {
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "players_heroes",
joinColumns = { @JoinColumn(name = "player_id") },
inverseJoinColumns = { @JoinColumn(name = "hero_id") })
private Set<Hero> mHeroes;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "player_id", nullable = false)
private Long mId;
}
Класс героя выглядит довольно похоже и в настоящее время не имеет никакой возможности получить игрока-владельца, поскольку даже базовая ассоциация еще не работает:
@Entity
@SequenceGenerator(name = "hero_id", initialValue = 1, allocationSize = 1)
@Table(name = "heros")
public class Hero {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "hero_id", nullable = false)
private Long mId;
}
В настоящее время я генерирую схему базы данных, используя hibernate.hbm2ddl.auto = create
, и она дает мне следующий вывод:
Hibernate: create table heros (hero_id int8 not null, [...] primary key (hero_id))
Hibernate: create table players (player_id int8 not null, [...], primary key (player_id))
Ассоциация явно отсутствует :( Кто-нибудь может увидеть, что я делаю не так?