2011-02-10 5 views
6

Necesito extender una entidad, con las mismas características sin usar clases abstractas.Extender entidades hibernadas con la anotación

¿Puedo escribir algo como a continuación?

@Entity 
@Table(name="ABC") 
@SequenceGenerator(sequenceName="SEQ_ABC",name="idGenerator",allocationSize=1) 
public class Abc { 
.. // define members 
} 

@Entity 
@Table(name="EX_ABC") 
public class ExAbc extends Abs { 
.. // define extras.. 
} 

THX de antemano

+1

¿Querías 'extends Abc' en lugar de' extends Abs'? –

Respuesta

15

Sí, éste funciona sin ningún problema. Sin embargo, debería echar un vistazo a inheritance annotation.

¿Cuál es el problema ?: Tiene una tabla "Abc" que contiene el campo1, el archivo2; Luego tiene ExAbc que contiene los campos de "Abc" y en el campo de adición3. Ahora, si piensas en términos de bases de datos, ¿qué debería hacer ese sistema con estas dos clases? Póngalos en una sola tabla dejando field3 = null para todas las filas de tipo "Abc"? o ponerlos en dos tablas diferentes? o poner los campos comunes en una tabla y crear una segunda para el archivo adicional3?

Cada solución tiene sus ventajas y desventajas, como puede leer en el enlace que publiqué, y depende de su situación decidir cuál es la mejor.

(por defecto creo que es la estrategia conjunta, sin embargo yo no contaría con que siendo así que para cada base de datos)

+0

Thx por la respuesta Hons, mis reglas de negocio se ajustan a @Inheritance (estrategia = InheritanceType.TABLE_PER_CLASS), pero cuando voy a buscar registros, consigo tanto registros secundarios (UNION ALL) y los padres, ¿cómo puede busco el registro particular de padre o hijo. thx de nuevo de nuevo – emre

+0

Lo siento, no estoy seguro de lo que quiere decir. ¿Hace un SELECT en el EX_ABC y luego recibe entidades de ambas tablas? – Hons

+0

Sí, esto es lo que sucede ... no sé cómo evitar eso, a mí también. Consulte https://forum.hibernate.org/viewtopic.php?f=1&t=958277 – Martin

Cuestiones relacionadas