Отображение OneToMany с JoinTable не отображается в базе данных - PullRequest
1 голос
/ 29 января 2012

Я хотел бы смоделировать отношения 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))

Ассоциация явно отсутствует :( Кто-нибудь может увидеть, что я делаю не так?

1 Ответ

0 голосов
/ 31 января 2012

Хорошо, просто глупая ошибка не видна в приведенных мною фрагментах: беглый комментарий.

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