Hallo, ich habe mehrere Entitäten per @ManyToOne Annotation in Relation gesetzt (Spring Boot, Maven, JPA usw.). Wie bekomm ich es jetzt hin, aus den gesammelten Daten ein DTO Objekt zu erstellen (ich brauch ja nicht alles von allen Entitäten)? Im Moment habe ich von allen Entitäten die ich brauche alle Attribute als Rückgabewert als Json Format (Get Request).
Naja, du definiertst du deine DTO-Klasse so, wie du sie brauchst, und erstellst dann Objekte davon, bei DTOs ist wirklich keinerlei Magie im Spiel. Oder zielt deine Frage auf irgendwas bestimmtes ab?
Ah. Hallo mrBrown. Ich habe eine Entität sagen wir mal "Auftragskopf". Darin habe ich, per @ManyToOne Annotation, Beziehungen über Fremdschlüssel zu den Entitäten "Auftrag", "Auftragsposition", "Kunde", "Produkt" hergestellt. Wenn jetzt ein Get-Request an den Endpunkt im Controller kommt, bekomme ich einen vollständigen Datensatz aller in Beziehung stehender Entitäten (JSON Format) mit sämtlichen Variablen aus der Datenbank. Den will ich in ein DTO konvertieren, da ich nicht alle Daten benötige. Bei einer einzelnen Entität ist das ja nicht so wild. Da lass ich dann einfach die Variablen weg, die ich nicht brauche, oder ignoriere sie per mapstruct, so daß ich gar kein DTO benötige. Aber hier ist das anderes. In einem JSON ist alles komplett drin. Und hab keinen Schimmer, wie ich da ein DTO draus machen kann. Irgendwie fehlt mir da der entscheidende Gedanke, der wo es klick macht. :-D
Java:
@GetMapping(path ="/auftragskopf/{id}"
und zurück bekomme ich dann auftragskopf, auftrag, auftragsposition, kunde, produkt in einem einzigen JSON Objekt.
Vergiss erstmal JSON und so, das ist jalles rein auf Java-Ebene.
Ein DTO ist einfach nur ein ganz normales Java-Objekt, ohne irgendwelche Magie. Du erstellst einfach für deine Controller-Methode Klassen, die ganz das enthalten, was dieser Endpunkt zurückgeben soll.
Wenn das zB ein Auttragskopf mit unr Kunde und Auftrag ist, dann legst du eine AuttragskopfDTO an, was dann KundeDTO und AuftragDTO nutzt, und alle Klassen enthalten jeweils nur das, was benötigt wird.
Wenn das zB ein Auttragskopf mit unr Kunde und Auftrag ist, dann legst du eine AuttragskopfDTO an, was dann KundeDTO und AuftragDTO nutzt, und alle Klassen enthalten jeweils nur das, was benötigt wird.