Сейчас я использую подход таблицы к подклассу для моделирования моих данных.Упрощение моей иерархии:
abstract class Abstract {
/* common data stored in abstract */
}
class ConcreteTypeA1 extends Abstract {
/* extra data stored in concrete_type_a_1 */
}
class ConcreteTypeA2 extends Abstract {
/* extra data stored in concrete_type_a_2 */
}
class ConcreteTypeB extends Abstract {
/* extra data stored in concrete_type_b */
}
Таким образом, он выполняет три внешних соединения, где я беру экземпляры типа Abstract (на самом деле это двенадцать).Вчера я понял, что ConcreteTypeA1 и ConcreteTypeA2 действительно имеют одинаковые дополнительные данные, они просто ведут себя по-разному, поэтому я хотел бы уменьшить количество объединений, поместив эти два класса в одну таблицу и используя столбец дискриминатора.Как / можно это сделать?
class Abstract {
/* common data stored in abstract */
}
abstract class ConcreteTypeA extends Abstract {
/* extra data stored in abstract_type_a */
}
class ConcreteTypeA1 extends ConcreteTypeA {
/* just behavior, no extra data, uses data in abstract_type_a */
}
class ConcreteTypeA2 extends ConcreteTypeA {
/* just behavior, no extra data, uses data in abstract_type_a */
}
class ConcreteTypeB extends Abstract {
/* extra data stored in concrete_type_b */
}