@Query не работает в Spring Boot (JPA) + Azure Cosmos db - PullRequest
1 голос
/ 13 марта 2019

Я занимаюсь разработкой IoT-приложения. Данные находятся в базе данных Azure Cosmos. пример)

{
        "id": "3ebd07c0-0740-466f-acb4-1e04a58cdf1a",
        "serviceId": 1,
        "deviceId": 1,
        "contents": "{\"temperature\":34.797642257199705,\"humidity\":79.18982439419167,\"illuminance\":100}",
        "date": 1552376519931
    }

Итак. Я хочу использовать пользовательский запрос, подобный этому

public interface DeviceTelemetryRepository extends DocumentDbRepository<DeviceTelemetry, String> {

    @Query("SELECT a.deviceId FROM device_telemetry a where a.deviceId=:deviceId and a.date >=:from and a.date <=:to")
    List<DeviceTelemetry> findTelemetryByDeviceId(@Param("deviceId") int deviceId,
                                     @Param("from") long from,
                                     @Param("to") long to    );
}


@Data
@NoArgsConstructor
@AllArgsConstructor

public class DeviceTelemetry {
    private String id;
    private int serviceId;
    private int deviceId;
    private String contents;
    private long date;
}

Но это не работает. Я уже проверил его запрос и данные на портале Azure. Это было хорошо.

Я думаю, что «DeviceTelemetryRepository расширяет DocumentDbRepository» не может распознать @ Query.

Есть ли у вас какие-либо предложения о Spring Boot JPA + Azure Cosmos DB? Спасибо!

Ответы [ 3 ]

0 голосов
/ 14 марта 2019

Я изменил название метода. Это работает!

List<DeviceTelemetry> findDeviceTelemetryByDeviceIdAndDateBetween(@Param("deviceId") int deviceId,
                                                               @Param("from") long from,
                                                               @Param("to") long to    );

но он по-прежнему не распознает @Query Пожалуйста, дайте мне знать, как работать с аннотацией Query.

0 голосов
/ 28 июня 2019

Библиотека Microsoft spring-data-cosmosdb не поддерживает аннотацию @Query.

0 голосов
/ 13 марта 2019
@Query("SELECT a FROM device_telemetry a where a.deviceId=:deviceId and a.date >=:from and a.date <=:to")
List<DeviceTelemetry> findTelemetryByDeviceId(@Param("deviceId") int deviceId,
                                 @Param("from") Date from,
                                 @Param("to") Date to    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...