Столбец дискриминатора гибернации с таблицей на подкласс - PullRequest
2 голосов
/ 01 июня 2011

Сейчас я использую подход таблицы к подклассу для моделирования моих данных.Упрощение моей иерархии:

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 */
}

Ответы [ 2 ]

1 голос
/ 01 июня 2011

Использовал ответ на этот вопрос согласно совету Винсента.

Как смешать стратегии наследования с аннотациями JPA и Hibernate?

1 голос
/ 01 июня 2011

используйте это в родительском классе

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
    name="type",
    discriminatorType=DiscriminatorType.STRING)

и по конкретным классам используйте

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