2017-06-02 3 views
0

Stellen Sie sich vor, ich bekomme neue Entität von Front-End. Java-Klassen für die wie folgt aussehen:Hibernate Entitäten Persistenz

public class SomeClass { 

    private Long id; 

    private String nameOfSomeClass; 

    @OneToMany(mappedBy = "someClass") 
    private List<Other> others; 

} 

Und:

public class Other { 

    private Long id; 

    private String otherName;   

    @ManyToOne 
    private SomeClass someClass; 

} 

Meine POST-Anfrage von Front-End:

{ 
    nameOfSomeClass: "Some name" 
    others: [{ 
      otherName: "name1" 
     }, 
     { 
      otherName: "name2" 
     } 

    ] 
} 

Wie kann ich anhalten dieses Objekt? Eigentlich habe ich keine ID von Other, die auf SomeClass Referenz hat. Der gleiche Fall für die SomeClass.

Meine Vision davon: Erstens muss ich jedes Element von others mit leeren id Referenz für die SomeClass persistieren. Danach werde ich id's von jedem von others bekommen. Dann bleibe ich SomeClass Objekt und bekomme id und behalte others wieder aber mit id von SomeClass.

Ich weiß, das ist total falsch und Winterschlaf hat eine richtige Lösung dafür. Könnten Sie mir bitte dabei helfen?

+0

Wenn 'name' eindeutig ist, verwenden Sie es als' ID' –

+0

@KrzysztofCichocki Ich benutze 'ID' als PK in der Datenbank, Name ist nicht eindeutig – Nox

Antwort

0

Die Art und Weise dieses hadle sollte, ist:

erstellen eine Instanz von SomeClass es mit den Werten füllen, die instaces von Other erstellen und füllen Sie sie und fügen Sie das Ende „link“ sie zusammen:

SomeClass s = new SomeClass(); 
s.setNameOfSomeClass(nameOfSomeClass); 

Other o1 = new Other(); 
o1.setOtherName(otherName); 
o1.setSomeClass(s) 

List others = new ArrayList(); 
others.add(o1); 

s.setOthers(others); 
Verwandte Themen