Hibernate @DiscriminatorValue не подобрано - PullRequest
1 голос
/ 23 сентября 2011

У меня есть следующая иерархия:

@Entity
@Table("changes")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
class Change {
  @Column(name="type", nullable=false, insertable=false, updatable=false)
  @GeneratedValue
  String _type;

  @ManyToOne
  @JoinColumn(name = "user_id")
  User _user;
}

@Entity
class EmailChange extends Change {}

@Entity
class BillingChange extends Change {}

@Entity
class User {
  @OneToMany(mappedBy = "_user", cascade = Array(Cascade.ALL))
  List<EmailChange> _emailChanges;

  @OneToMany(mappedBy = "_user", cascade = Array(Cascade.ALL))
  List<BillingChange> _billingChanges;
}

Я ожидаю, что _emailChanges будет содержать только строки, где type = "EmailChange", и _billingChanges - строки с type = "BillingChange". Однако это не то, что происходит на самом деле - оба содержат строки обоих типов. Есть ли способ заставить его подчиняться полиморфным отношениям?

1 Ответ

0 голосов
/ 23 сентября 2011

Вы отобразили его как SINGLE_TABLE, поэтому все столбцы идут в одну таблицу.OneToMany создает внешний ключ для этой таблицы.В одной и той же таблице не может быть разных столбцов.

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