Spring Boot JPA - поиск местоположений, которые находятся в пределах заданного диапазона местоположений (широта, долгота) и радиуса (расстояние) - PullRequest
1 голос
/ 22 февраля 2020

Я пытаюсь написать запрос mysql в Spring JPA, чтобы найти местоположения в заданном диапазоне. (Я использую Spring Boot + Kotlin)

Я пытаюсь выполнить следующий запрос:

@Repository
interface LocationRepository : JpaRepository<LocationEntity, Long> {

    @Query("SELECT id, (6371 * acos ( cos ( radians(:lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(:lng) ) + sin ( radians(:lat) ) * sin( radians( lat ) ))) AS distance FROM location GROUP BY address HAVING distance < :distance ORDER BY distance ASC", nativeQuery=true)
    fun filterByLocation(
        @Param("lat") lat: String,
        @Param("lng") lng: String,
        @Param("distance") distance: Int
    ): List<LocationEntity>
}

Но я получаю следующую ошибку:

java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'my_app.location.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

My Местоположение объекта является следующим:

@Entity(name = "location")
data class LocationEntity(
    var lat: Double,
    var lng: Double
) {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long = 0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...