Передача 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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