Передача LocalDate в сравнение Between для Cosmos DBJAVA

Программисты JAVA общаются здесь
Anonymous
Передача LocalDate в сравнение Between для Cosmos DB

Сообщение Anonymous »

У меня есть база данных Cosmos DB со следующими примерами данных в контейнере:

Код: Выделить всё

{
"postedDate": "2025-01-01",
... Other fields
}
Репозиторий:

Код: Выделить всё

public interface TransactionRepo extends ReactiveCosmosRepository {
Flux findByPostedDateBetween(LocalDate startPostedDate, LocalDate endPostedDate);
}
Сущность:

Код: Выделить всё

@Container("containerName")
public class Transaction{
private LocalDate postedDate;
// Other fields including partition key, id, etc
}
Когда я вызываю метод findByPostedDateBetween(), данные не возвращаются. Оказалось, что проблема в том, что внутренний Azure SDK ObjectMapper, созданный в com.azure.cosmos.implementation.Utils.createAndInitializeObjectMapper(), сериализует startPostedDate и endPostedDate в массив [год, месяц, дата], что заведомо убивает сравнение. Мне не известен способ обновить конфигурацию сопоставителя объектов, чтобы добавить write-dates-as-timestamps=false.
Я не хочу сохранять даты в виде строк, но пока не вижу другого способа. Perplexity предложила несколько вариантов, включая собственный конвертер, но ни один из них не сработал.
Spring Boot 3, Java 17.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -cosmos-db

Вернуться в «JAVA»