Zugriff auf den Wert einer Fremdschlüsselspalte, ohne einen zugehörigen Datensatz abzurufenJava

Java-Forum
Guest
 Zugriff auf den Wert einer Fremdschlüsselspalte, ohne einen zugehörigen Datensatz abzurufen

Post by Guest »

Bedenken Sie die folgende Codestruktur:

Code: Select all

@Entity
class Parent {
}

@Entity
class Child {
private String name;

@ManyToOne
private Parent parent;
}

In meinem API-Controller möchte ich mit einer untergeordneten-Liste antworten. Jedes untergeordnete-Element sollte einige untergeordnete-Felder (z. B. Name) und eine übergeordnete-ID (und keine anderen übergeordneten-Daten) enthalten:

Code: Select all

// JSON Response example
{
"children": [
{
"name": "Child 1",
"parent_id": 1
},
{
"name": "Child 2",
"parent_id": 2
}
]
}
Um den parent_id-Wert bereitzustellen, lässt mich Spring+Hibernate+JPA folgendermaßen auf die Parent-ID zugreifen:

Code: Select all

child.getParent().getId()
Das führt nicht nur dazu, dass der gesamte Elterndatensatz mit allen seinen Feldern unnötig aus der Datenbank abgerufen wird, sondern verursacht bei mir auch ein N + 1-Problem Dies ist der Fall, wenn keine JOIN FETCH- oder EAGER LOAD-Ansätze verwendet werden.
Aber parent_id ist eine einfache Child-Spalte.
Sie sollte verfügbar sein für kostenlos, auch wenn die Assoziation nicht geladen wurde!
Gibt es einen optimalen Weg, mein Ziel zu erreichen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post