Нет, это не глупо и напрямую поддерживается в Hibernate, см .: 9.1.5.Таблица для конкретного класса .
<class name="Person">
<id name="id" type="long" column="PERSON_ID">
<generator class="sequence"/>
</id>
...
<union-subclass name="Customer" table="CUSTOMER">
...
</union-subclass>
<union-subclass name="Supplier" table="SUPPLIER">
...
</union-subclass>
</class>
В JPA с аннотациями вы можете написать:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Person {
...
}
@Entity
public class Customer extends Person {
...
}
@Entity
public class Supplier extends Person {
...
}
Если вам не нужно выполнять запросы перекрестного наследования, такие как: " дайте мне всех людей с именем "Смит", независимо от того, являются ли они клиентами или поставщиками", эта стратегия довольно хороша.