2

I have two entities with one to many mapping.

Table names: key and Value (many values mapped to one key).

I have defined the cascade operation as ALL while writing the entity. I have a set of data to be updated in value table. This does not work while using,

return Panache.withTransaction(() -> {
    Session session = PanacheEntityBase.getSession().subscribeAsCompletionStage().join();
    session.mergeAll(updatedList);
    return Uni.createFrom().item(updatedList);
}

How do I achieve this?

Entity definitions:

@Entity
@Table(name = "key")
public class Key extends BaseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long id;

    @Column(name = "name", unique = true, nullable = false)
    private String name;

    @OneToMany(mappedBy = "key", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<Value> values;

}

@Entity
@Table(name = "value")
public class Value extends BaseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long id;

    @Column(name = "name", nullable = false)
    private String name;

    /**
     * To map the key id
     */
    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "key_id", nullable = false)
    private Key key;
}

0 Answers0