Übergeben von LocalDate an Between-Vergleich für Cosmos DBJava

Java-Forum
Anonymous
 Übergeben von LocalDate an Between-Vergleich für Cosmos DB

Post by Anonymous »

Ich habe eine Cosmos DB-Datenbank mit den folgenden Beispieldaten im Container:

Code: Select all

{
"postedDate": "2025-01-01",
... Other fields
}
Repository:

Code: Select all

public interface TransactionRepo extends ReactiveCosmosRepository {
Flux findByPostedDateBetween(LocalDate startPostedDate, LocalDate endPostedDate);
}
Entität:

Code: Select all

@Container("containerName")
public class Transaction{
private LocalDate postedDate;
// Other fields including partition key, id, etc
}
Wenn ich die Methode findByPostedDateBetween() aufrufe, werden keine Daten zurückgegeben. Es stellte sich heraus, dass das Problem darin besteht, dass der interne Azure SDK ObjectMapper, der in com.azure.cosmos.implementation.Utils.createAndInitializeObjectMapper() erstellt wurde, startPostedDate und endPostedDate in ein Array [ Jahr, Monat, Datum ] serialisiert, was den Vergleich sicherlich zunichte macht. Mir ist keine Möglichkeit bekannt, die Objekt-Mapper-Konfiguration zu aktualisieren, um write-dates-as-timestamps=false hinzuzufügen.
Ich möchte Datumsangaben nicht als Zeichenfolgen behalten, aber bisher sehe ich keine andere Möglichkeit. Perplexity schlug mehrere Optionen vor, darunter einen benutzerdefinierten Konverter, aber keine davon funktionierte.
Spring Boot 3, Java 17.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post