statements - Java/Hibernate JPA: InheritanceType.TABLE_PER_CLASS e ID
spring mappedsuperclass (1)
Estoy usando Hibernate JPA.
Supongamos que tengo estas clases:
AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer
¿Hay alguna manera de hacer que las clases concretas tengan ID independientes?
Estoy usando InheritanceType.TABLE_PER_CLASS.
De la Guía de referencia de anotaciones de Hibernate:
2.2.4.1. Tabla por clase
Esta estrategia tiene muchos inconvenientes (especialmente con consultas polimórficas y asociaciones) explicadas en la especificación JPA, la documentación de referencia de Hibernate, Hibernate en acción y muchos otros lugares. Hibernate trabaja en la mayoría de ellos implementando esta estrategia usando consultas de
SQL UNION
. Se usa comúnmente para el nivel superior de una jerarquía de herencia:
@Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Flight implements Serializable { ... }
Esta estrategia admite asociaciones de uno a muchos siempre que sean bidireccionales. Esta estrategia no es compatible con la estrategia del generador de
IDENTITY
: el ID debe compartirse en varias tablas. En consecuencia, al usar esta estrategia, no debe usarAUTO
niIDENTITY
.
Así que me temo que lo que quieres no es compatible (y sugiero usar GenerationType.TABLE
).