我有一堂课(比如说Class A
)其中有一个字段LocalDate localDate
(Java.time),我考虑过使用LocalDate
因为我想保存“日期”而不保存“时间”。我想将此类 A 的对象保存到 firebase 数据库中。作为LocalDate
is serializable
我以为我可以轻松地将它保存在 FB 数据库上,但在实际实现它时,我收到此错误:
'firebase.database.DatabaseException: Found conflicting getters for name: getChronology'
我在 Twitter 上发布了此消息,并得到了 @puf 和 doug 的快速回复。
我确实得到了一些帮助,但我仍在寻找几个问题的答案:
有没有一种简单且通用的方法可以将字段保留在我的模型中LocalDate
但只是用它作为String
存储在数据库中时?就像是overriding
the toString()
方法(尽管重写toString()
此处不起作用,因为 Firebase 不使用可序列化来获取对象数据)。
“如何在没有时间的情况下将日期保存到 Firebase 数据库”的最佳解决方案是什么?
正如我在后续推文中暗示的那样,以下行为最符合您的利益:
- 使用普通的 long 值来表示时间点
- 将 LocalDate (或任何派生对象)的使用推迟到应用程序中实际需要其日期操作功能的其他部分。
其原因有:
- 存储时间较长意味着您能够按该单个值对数据库查询进行排序和过滤。
- 您不必破坏 POJO 来提供尝试转换 a 的 getter 和 setter
long
日期到该派生对象,甚至不知道它是否会被使用。根据需要进行延迟更简单、更高效。
最重要的是,不将实用程序类与数据模型一起使用会更容易、更灵活、更高效。当数据模型包含存储的原始数据时,它们可以更好地与 Firebase 配合使用。
请注意,对于 Firestore,大多数平台上都会对本机日期对象类型进行特殊处理。因此,如果您想移植到 Firestore,实际上最好使用平台的日期类型来读取和写入 Firestore 时间戳字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)