1
를 포착하지 나는 다음과 같은 계층 구조가 있습니다최대 절전 모드 @DiscriminatorValue는
@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 만 행을 포함하는 기대를 어디 유형 = "BillingChange"과 유형 = "EmailChange"및 _billingChanges 행. 그러나 이것은 실제로 일어나는 것이 아닙니다. 둘 다 결국 두 유형의 행을 포함하게됩니다. 다형성 관계에 따르도록 강제 할 방법이 있습니까?
테이블의 열은 정확히 동일합니다. 그러나, 나는이 foreign 키가 요청 된 객체의 유형을 계속 따르도록 기대합니다. 즉, type = "emailChange"또는 type = "billingChange"로 제한하는 것이고 이것은 발생하지 않는 것 같습니다. –