Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Spring Boot / JPA / mySQL - viele-zu-eins-Beziehungen erzeugen zu viele SQL-Abfragen

Dies könnte ein n + 1 sein Problem.

Sie können einen JOIN FETCH in Ihrer JPA-Abfrage, um dies zu beheben.

Aktualisieren Sie Ihr JPA-Repository wie folgt

public interface MessagesRepository extends CrudRepository<Message, Long> { 
    
    @Query("Select m from Message m join fetch m.sender ms join fetch m.receiver mr where ms.id = :senderId or mr.id = :receiverId order by m.time desc")
    List<Message> findBySenderIdOrReceiverIdOrderByTimeDesc(Long senderId, Long receiverId);

}

Eine ausführlichere Erklärung finden Sie unter dies Antwort.

PS: Ich habe die Abfrage nicht getestet.