Java 新的cassandra绑定语句getDate方法
在一个遗留项目中,我们在Spring应用程序中使用了cassandra驱动程序的版本2。 这个版本,特别是类Java 新的cassandra绑定语句getDate方法,java,spring,date,cassandra,Java,Spring,Date,Cassandra,在一个遗留项目中,我们在Spring应用程序中使用了cassandra驱动程序的版本2。 这个版本,特别是类BoundStatement公开了一个返回java的方法。我们都知道旧的JavaDateAPI非常糟糕,但如果谨慎使用,它就可以做到这一点 现在,由于某种必要性,我们决定将cassandra驱动程序升级到3.4版。首先要注意的是,在这个版本中,同一个方法现在返回一个日期类型,datastax团队实现该日期类型来回复java的日期。文档中记录了这个类的有趣之处: ISO 8601中没有时间成
BoundStatement
公开了一个返回java的方法。我们都知道旧的JavaDateAPI非常糟糕,但如果谨慎使用,它就可以做到这一点
现在,由于某种必要性,我们决定将cassandra驱动程序升级到3.4版。首先要注意的是,在这个版本中,同一个方法现在返回一个日期类型,datastax团队实现该日期类型来回复java的日期。文档中记录了这个类的有趣之处:
ISO 8601中没有时间成分、没有时区的日期
日历。请注意,ISO 8601与
Java中使用的默认公历:它使用前公历
日历,这意味着它是过去的公历
(无公历变动);有一年是零。这个班
实现这些差异,以便年/月/日字段匹配
完全是CQL字符串文本中的那些
所以基本上,这个类会截断
时间
信息。此更改导致基于日期比较的单元测试出现一些故障,需要进行一些测试修改。对我来说,这似乎很奇怪,但我想税务团队做出这样的选择肯定有很好的理由。我很乐意听取对此有更多了解的人的意见。getDate
从驱动程序2移动到驱动程序3.0中的getTimestamp
,如下所述:
- TINYINT类型的getByte/setByte
- 用于SMALLINT类型的getShort/setShort
- 时间类型的getTime/setTime
- 日期类型的getDate/setDate
其主要理由是在Cassandra 3.0中添加了
date
类型。为了避免将来的混淆,我们将现有的getDate
移动到getTimestamp
,以便get方法与其cql类型名称匹配。感谢您的澄清。这只是有点让人困惑的是,同一个getter一直在工作,就像它说的不要担心,一切都在按它应该的方式工作,我没有找到指南中的这一点。