Sie sind mit trägen Datenbankvorgängen konfrontiert das Problem mit eifrig abgerufenen OneToOne-Beziehungen mit tiefen Entitätshierarchien, was zu übermäßigen Verknüpfungen in Abfragen führt. Leider haben sich Versuche, @OneToOne(fetch = FetchType.LAZY) oder @ManyToOne(fetch = FetchType.LAZY) mit Anmerkungen zu versehen, als erfolglos erwiesen.
@ManyToOne(fetch = FetchType.LAZY) sollte wie vorgesehen funktionieren. Überprüfen Sie noch einmal, ob in HQL-Abfragen oder Kriterien-API-Abrufmodi Überschreibungen vorhanden sind, die Klassenanmerkungen ersetzen könnten. Wenn das Problem weiterhin besteht, stellen Sie Codebeispiele zur weiteren Analyse bereit.
@OneToOne ist differenzierter. Wenn die Beziehung nicht nullbar ist, geben Sie sie wie folgt an:
@OneToOne(optional = false, fetch = FetchType.LAZY)
Für nullbare Beziehungen ziehen Sie die folgenden Ansätze in Betracht:
Hinzufügen eines Fremdschlüssels Spalte: Fügen Sie der Eigentümertabelle eine Fremdschlüsselspalte hinzu und ordnen Sie die Beziehung zu „joined“:
@OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "other_entity_fk") public OtherEntity getOther();
@OneToOne(mappedBy = "other") public OwnerEntity getOwner();
Während verzögertes Abrufen Leistungsprobleme lindern kann, gehen Sie mit Vorsicht vor. In Fällen, in denen zahlreiche eifrige OneToOne-Beziehungen zu übermäßigen Verknüpfungen führen, sollten Sie die Lösung zugrunde liegender struktureller Probleme im Datenmodell oder in den Entitätsbeziehungen in Betracht ziehen.
Das obige ist der detaillierte Inhalt vonWie macht man JPA OneToOne-Beziehungen faul?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!