簡體   English   中英

在Firebase數據庫中保存LocalDate(Java.time)的對象

[英]Save object of LocalDate (Java.time) in Firebase database

我有一個具有字段LocalDate localDate (Java.time)的類(例如Class A ),我考慮使用LocalDate因為我想保存“ date”而不包含“ time”。 我想將此類A的對象保存到Firebase數據庫。 由於LocalDate是可serializable所以我認為我可以輕松地將其保存在FB數據庫中,但是在實際實現它時,出現了以下錯誤:

'firebase.database.DatabaseException: Found conflicting getters for name: getChronology'

我將其發布在Twitter上,並得到@puf和doug的快速響應。

在此處輸入圖片說明 在此處輸入圖片說明

我確實得到了一些幫助,但我仍在尋找以下幾個問題的答案:

  1. 是否有一種簡單且通用的方式將字段保留在模型中,作為LocalDate ,而在存儲在數據庫中時僅將其用作String 諸如overriding toString()方法之類的東西(盡管覆蓋toString()在這里無法正常工作,因為Firebase不使用可序列化的方法來獲取對象數據)。

  2. 什么是“如何在沒有時間的情況下將日期保存到Firebase數據庫”的最佳解決方案?

正如我在后續推文中所暗示的,您的最大利益是:

  1. 使用普通的long值表示時間點
  2. 將LocalDate(或任何派生對象)的使用推遲到應用程序中實際上需要其日期處理功能的其他部分。

原因如下:

  1. 存儲時間長意味着您可以通過該單個值對數據庫查詢進行排序和過濾。
  2. 您無需弄亂POJO即可提供嘗試將long日期轉換為該派生對象的getter和setter,而無需知道是否要使用它。 根據需要延遲更簡單,更有效。

最重要的是,不將實用程序類與數據模型一起使用會更輕松,更靈活,更高效。 當數據模型包含已存儲的原始數據時,它們可以與Firebase更好地配合使用。

請注意,在Firestore中,大多數平台上對本機Date對象類型都有特殊處理。 因此,如果您想移植到Firestore,則最好使用平台的日期類型來讀寫Firestore時間戳字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM