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
È stato utile?

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
scroll top