Yaml per tabella autoreferenziale
-
27-10-2019 - |
Domanda
Ho un modello definito come segue:
public class Link extends Model {
@Required
public String tag;
@Required
public String type;
@Required
public int weight;
@ManyToOne(cascade = CascadeType.ALL)
public Link parent;
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
public List<Link> children;
@ManyToMany(cascade = CascadeType.PERSIST)
public List<Tag> tags;
}
Non sono in grado di specificare genitore per i primi due elementi nello yaml per competere con i miei dati
Link(m):
tag: m
type: home
weight: 1
tags:
- tagH
- tagM
Link(hh):
tag: hh
type: home
weight: 2
tags:
- tagH
- tagHH
artoo.Link(focus):
tag: focus
type: footer
weight: 1
tags:
- tagTechnology
- tagLegal
children:
- m
- hh
Soluzione
La proprietà della relazione genitore-figlio Link-to-Link è sull'oggetto figlio.La proprietà è definita dal parametro mappedBy in
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
Pertanto dovresti prima dichiarare l'oggetto genitore in YAML e omettere il campo "figli" dal genitore.Quindi puoi aggiungere le dichiarazioni dell'oggetto figlio dopo la dichiarazione dell'oggetto genitore e aggiungere i campi
parent: focus
agli oggetti figli.Dovrebbe essere qualcosa del genere:
Link(focus):
...
Link(m):
parent: focus
Link(hh):
parent: focus
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow