Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
Herencia con discriminador
// Opción por defecto, si no la ponemos todo queda igual
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@Entity
public class Publicacion {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String titulo;
private int precio;
@ManyToOne
private Autor autor;
@Entity
public class Libro extends Publicacion{
private String isbn;
@Entity
public class Articulo extends Publicacion{
private String nombreRevista;
Sería posible introducir un listado de libros y un listado de artículos dentro de un autor utilizando un código similar a este:
autor.setPublicaciones(libros.stream().map(T-> (Publicacion)T).collect(Collectors.toList()));
autor.setPublicaciones(articulos.stream().map(T-> (Publicacion)T).collect(Collectors.toList()));
¿Qué ocurre en la base de datos?
DTYPE | id | precio | titulo | isbn | nombreRevista | autor_id |
Herencia con joins
@Inheritance(strategy=InheritanceType.JOINED)
@Entity
public class Publicacion {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String titulo;
private int precio;
@ManyToOne
private Autor autor;
@Entity
@PrimaryKeyJoinColumn(name="publicacionId")
public class Libro extends Publicacion{
private String isbn;
@Entity
@PrimaryKeyJoinColumn(name="publicacionId")
public class Articulo extends Publicacion{
private String nombreRevista;
¿Qué ocurre en la base de datos?
id | precio | título | autor_id |
isbn | publicacionID |
nombreRevista | publicacionID |