Cuando se tiene una tabla en la que su llave primara es compuesta, se debe hacer una clase aparte que contenga los atributos que conforman la llave
Creando la Clase que tendra nuestra llave compuesta
Recuerda que debe de contener lo siguiente:
- se le debe agregar la anotacion @Embeddable
- se debe de hacer un “implements Serializable”
- debe contener los atributos que conformen la llame compuesta
- como en la mayoria de entidades debemos crear los getter y setters
@Embeddable
public class ComprasProductoPK implements Serializable {
@Column(name = "id_compra")
private Integer idCompra;
@Column(name = "id_producto")
private Integer idProducto;
public Integer getIdCompra() {
return idCompra;
}
public void setIdCompra(Integer idCompra) {
this.idCompra = idCompra;
}
public Integer getIdProducto() {
return idProducto;
}
public void setIdProducto(Integer idProducto) {
this.idProducto = idProducto;
}
}
En la clase principal debemos tener:
- Declarar la variable id como el tipo de la clase que creamos de nuestra llave compuesta que en este caso es : “ComprasProductoPK”
- Agregarle la etiqueta @EmbeddeId que hace referencia a que es una llave compuesta y que esta dada por otra clase
- Y nuevamente los Getter y Setters
@Entity
@Table(name = "compras_productos")
public class ComprasProducto {
@EmbeddedId
private ComprasProductoPK id;
private Integer cantidad;
private Double total;
private Boolean estado;
public ComprasProductoPK getId() {
return id;
}
public void setId(ComprasProductoPK id) {
this.id = id;
}
public Integer getCantidad() {
return cantidad;
}
public void setCantidad(Integer cantidad) {
this.cantidad = cantidad;
}
public Double getTotal() {
return total;
}
public void setTotal(Double total) {
this.total = total;
}
public Boolean getEstado() {
return estado;
}
public void setEstado(Boolean estado) {
this.estado = estado;
}
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?