Mysql
 sql >> Database >  >> RDS >> Mysql

Spring Boot / JPA / MySQL:la relazione molti a uno crea troppe query SQL

Potrebbe trattarsi di un n + 1 problema.

Puoi utilizzare un JOIN FETCH nella tua query JPA per risolvere questo problema.

Aggiorna il tuo repository JPA in questo modo

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);

}

Per una spiegazione più dettagliata, consulta questo rispondi.

PS: Non ho testato la query.