Java / Hibernate JPA: InheritanceType.TABLE_PER_CLASS e identificadores
-
01-10-2019 - |
Pregunta
Estoy usando Hibernate JPA.
Supongamos que tengo estas clases:
AbstractPerson
|--> ConcreteEmployee
|--> ConcreteCustomer
¿Hay alguna manera de hacer las clases concretas tienen identificadores independientes?
Estoy usando InheritanceType.TABLE_PER_CLASS.
Solución
A partir de la Guía de referencia Anotaciones de Hibernate:
2.2.4.1. Tabla por clase
Esta estrategia tiene muchos inconvenientes (esp. con consultas polimórficas y asociaciones) explican en la APP spec, la referencia Hibernate documentación, Hibernate en Acción, y muchos otros lugares. el trabajo de hibernación alrededor de la mayoría de ellos la aplicación de esta estrategia de uso de consultas
SQL UNION
. Eso se utiliza 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 apoya uno-a-muchos asociaciones siempre que sean bidireccional. Esta estrategia no soporta el generador
IDENTITY
estrategia: el identificador tiene que ser compartido la mayoría de las mesas. Por consiguiente, cuando se utiliza esta estrategia, usted debe No utilice niAUTO
IDENTITY
.
Así que me temo que lo que quiere no es compatible (y mejor utilizar GenerationType.TABLE
).