Ich schreibe einen Dienst mit JPA und Postgres db. Ich habe eine Klasse mit dem Namen Student:JPA (@OneToMany) Abfrage ohne Beitritt Kind Tabelle
public class Student {
@id
private String id;
private String firstName;
private String lastName;
@OneToMany(targetEntity = Phone.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "student_id", referencedColumnName = "id")
private Set<Phone> phones;
// Setter and Getter
}
und Telefon Klasse:
public class Phone {
@id
private String id;
private String number;
// Setter and Getter
}
Jetzt wird es in meinem db zwei Tabellen sein, folgende sind Spalten in ihnen:
Schüler: id, vorname, nachname
Telefon: id, Zahl, STUDENT_ID(erzeugt durch @JoinColumn)
Jetzt jedes Mal, wenn ich den Schüler abfragen, wird JPA den Telefontisch in Schülertisch verbinden und das Schülerergebnis enthält die Telefoninformationen dieses Schülers. Das ist genau was ich will.
Aber jetzt traf ich ein Problem. Wenn ich die Liste der Schüler abfrage, ist die Telefoninformation in diesem Fall nicht nützlich, nur die Identifikation, firstName und lastName sind notwendig. Aber JPA macht die gleiche "Join" -Operation auch für mich. Ich weiß, das kostet viel Zeit. Wie könnte ich in einem solchen Fall die Informationen einfach in den Schülertisch zurückgeben? Ohne den Telefontisch zu betreten?
Ich habe versucht, etwas im Repository wie
@Query(SELECT s.id, s.firstName, s.lastName FROM student s)
public List<Student> findAllStudentWithoutPhone();
aber es gibt mir die Liste der Werte, aber nicht in einen Student Objekt umgewandelt. Wie kann ich diese Funktion erreichen?
Vielen Dank @mAc, die Variable wurde hinzugefügt. –