I've a table like this
@Entity
@Table(name = "ORDINI")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Ordini
{
@Id
@Column(name = "idord")
@Size(min=5,max=25,message = "{Size.Ordini.idord.Validation}")
private String idord;
@Column(name = "idutente")
@Size(min=5,max=40,message = "{Size.Ordini.idutente.Validation}")
private String idutente;
@Column(name = "idanizzazione")
@Size(min=5,max=35,message = "{Size.Ordini.idanizzazione.Validation}")
@NotBlank(message = "{NotBlank.Ordini.descrizione.Validation}")
private String idanizzazione;
**@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, mappedBy = "ordine")
@CollectionTable(name = "idsord", joinColumns = @JoinColumn(name = "idord", referencedColumnName = "idord"))
@Valid
private Set<Prodotti> listaProdotti = new HashSet<>();**
@Column(name = "mailverificata")
private boolean mailverificata;
@Column(name = "pagamentoeseguito")
private boolean pagamentoeseguito;
@Temporal(TemporalType.DATE)
@Column(name = "date")
@NotNull(message = "{NotNull.Ordini.datacreazione.Validation}")
private Date date;
@Column(name = "codStat")
private String codStat;
@Column(name = "linkpagamento")
private String linkpagamento;
}
I've a table like this
@Entity
@Table(name = "ORDINI")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Ordini
{
@Id
@Column(name = "idord")
@Size(min=5,max=25,message = "{Size.Ordini.idord.Validation}")
private String idord;
@Column(name = "idutente")
@Size(min=5,max=40,message = "{Size.Ordini.idutente.Validation}")
private String idutente;
@Column(name = "idanizzazione")
@Size(min=5,max=35,message = "{Size.Ordini.idanizzazione.Validation}")
@NotBlank(message = "{NotBlank.Ordini.descrizione.Validation}")
private String idanizzazione;
**@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, mappedBy = "ordine")
@CollectionTable(name = "idsord", joinColumns = @JoinColumn(name = "idord", referencedColumnName = "idord"))
@Valid
private Set<Prodotti> listaProdotti = new HashSet<>();**
@Column(name = "mailverificata")
private boolean mailverificata;
@Column(name = "pagamentoeseguito")
private boolean pagamentoeseguito;
@Temporal(TemporalType.DATE)
@Column(name = "date")
@NotNull(message = "{NotNull.Ordini.datacreazione.Validation}")
private Date date;
@Column(name = "codStat")
private String codStat;
@Column(name = "linkpagamento")
private String linkpagamento;
}
and a table like this
@Entity
@Table(name = "PRODOTTI")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Prodotti
{
@Id
@Column(name = "codprod")
@Size(min=5,max=20,message = "{Size.Prodotti.codprod.Validation}")
private String codprod;
@Column(name = "nomeprod")
@Size(min=5,max=20,message = "{Size.Prodotti.nomeprod.Validation}")
private String nomeprod;
@Column(name = "descrizione")
@Size(min=6,max=80,message = "{Size.Prodotti.descrizione.Validation}")
@NotBlank(message = "{NotBlank.Prodotti.descrizione.Validation}")
private String descrizione;
@Column(name = "um")
@NotBlank(message = "{NotBlank.Prodotti.um.Validation}")
private String um;
@Column(name = "codstat")
private String codStat;
@Column(name = "pz")
@Max(value = 99, message = "{Max.Prodotti.pz.Validation}")
@Min(value = 1, message = "{Min.Prodotti.pz.Validation}")
private Integer pz;
@Column(name = "pesonetto")
@Max(value = 999, message = "{Max.Prodotti.pesonetto.Validation}")
@DecimalMin(value = "0.01", message = "{Min.Prodotti.pesonetto.Validation}")
private double pesonetto;
@Column(name = "idstatoprod")
@NotNull(message = "{NotNull.Prodotti.idstatoprod.Validation}")
private String idstatoprod;
@Column(name = "imgsrc")
@NotNull(message = "{NotNull.Prodotti.imgSrc.Validation}")
private String imgsrc;
@ManyToOne
@JoinColumn(name = "iva", referencedColumnName = "idiva")
@Valid
private Iva iva;
@ManyToOne
@JoinColumn(name = "famassort", referencedColumnName = "id")
@Valid
private FamAssort famAssort;
**@ManyToMany
@CollectionTable(name = "idsord", joinColumns = @JoinColumn(name = "codprod", referencedColumnName = "codprod"))
private Set<Ordini> ordine = new HashSet<>();**
}
when i insert a product with postman with a body like this
{
"idord": "000004",
"idutente": "123stezza",
"idanizzazione": "mygroup",
**"listaProdotti": [
{
"codprod": "000201",
"nomeprod": "Muscoli",
"descrizione": "Muscoli seminati, coltivati e raccolti nel golfo di La Spezia.",
"um": "kg",
"codstat": null,
"pz": 2,
"pesonetto": 0.8,
"idstatoprod": "1",
"prezzo": 0.0,
"imgsrc": "img/prodotto1.jpg",
"famAssort": {
"id": 1,
"descrizione": "Molluschi"
},
"iva": {
"idIva": 3,
"descrizione": "IVA 22%",
"aliquota": 22
}}
]**,
"mailverificata": true,
"pagamentoeseguito": false,
"date": "2025-02-24",
"codStat": "pagato",
"linkpagamento": ""
}
the insertion have success but the table in photo enter image description here
{
"idord": "000004",
"idutente": "123stezza",
"idanizzazione": "mygroup",
**"listaProdotti": []**,
"mailverificata": true,
"pagamentoeseguito": false,
"date": "2025-02-24",
"codStat": "pagato",
"linkpagamento": ""
}
(also "listaProdotti": [], remains empty too) does not come filled and remains empty.. but i should want to see the associations here..
how can i manage to have this table manytomany filled? Anyone can help me? Where i'm wrong?
Share edited Mar 6 at 20:35 Stefano Giammori asked Mar 6 at 20:30 Stefano GiammoriStefano Giammori 16 bronze badges1 Answer
Reset to default 0SOLVED
with a non-owner variable like this
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, mappedBy = "listaProdotti")
@JsonBackReference
private Set<Ordini> ordini;
and an owner variable like this
@ManyToMany
@Valid
private Set<Prodotti> listaProdotti = new HashSet<>();