es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Relaciones de Spring JPA

Tengo algunos problemas con las relaciones de Spring JPA.
Tengo dos entidades: Regalo y Dulce. Y quiero que el usuario pueda seleccionar dulces disponibles y agregarlos al regalo.
¿Cómo puedo hacer eso usando spring jpa?
Ya he intentado la relación “uno a muchos” con el regalo como propietario, y obtuve el error “null value in column ‘gift_id violates not-null constraints’ ” al crear y guardar los dulces.
Aquí está mi código:
Clase Regalo:

    @Entity
    public class Gift implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private long id;
    private String buyer;
    @OneToMany(cascade = CascadeType.REMOVE)
    @JoinColumn(name = "GiftId", nullable = true)
    private List<candy> candyList = new ArrayList<>();
    ...

Dulce:
@Entity
public class Candy implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@JsonIgnore
private long id;
private String name;
private String brand;
private double price;
private int weight;
private int sugar;
...

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el error “null value in column ‘gift_id violates not-null constraints'” al crear y guardar un Dulce, es necesario establecer la instancia de Regalo a la que se debe agregar el Dulce al lado poseedor de la relación. Puede modificar el código para agregar un Dulce a un Regalo de la siguiente manera:

    Gift gift = ... // obtener o crear la instancia de Regalo
    Candy candy = new Candy();
    candy.setName("Milky Way");
    ...
    
    gift.getCandyList().add(candy); // establecer el lado poseedor de la relación
    
    giftRepository.save(gift); // guardar la instancia de Regalo, lo que también guardará la instancia asociada de Dulce
    

    Asegúrese de obtener o crear la instancia de Regalo antes de agregar una nueva instancia de Dulce a ella. Además, asegúrese de establecer el lado poseedor de la relación llamando a gift.getCandyList().add(candy) antes de guardar la instancia de Regalo.

Comments are closed.