未找到请求操作的编解码器:[TEXT <-> java.time.LocalDate]
这是我用来填充数据库中的列的代码。
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS");
JSONObject publishedObj = jsonObject.optJSONObject("created");
if(publishedObj != null){
String dateStr = publishedObj.getString("value");
book.setPublishedDate(LocalDate.parse(dateStr,dateFormat));
}
下面是数据需要去的列的实例变量:
@Column("published_date")
@CassandraType(type = CassandraType.Name.DATE)
private LocalDate publishedDate;
我收到的错误消息:
com.datastax.oss.driver.api.core.type.codec.CodecNotFoundException: Codec not found for requested operation: [TEXT <-> java.time.LocalDate]
请有人帮忙。 谢谢你!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我可以用上面的代码重现该错误。为了解决这个问题,我对
book_by_id
表进行了ALTER
编辑,添加了两个新列:如下所示:
这些列的
BookEntity
类 解析并设置日期如下所示:tl;dr;
将
published_date
重新定义为DATE
类型,它将起作用。此外,日期/时间应该以日期/时间类型存储在数据库中。请注意,Cassandra 不允许您修改列的数据类型。此外,过去事实证明,Cassandra 快速连续删除和添加同名列的过程会出现问题。我建议添加一个新命名的
DATE
类型列,并重新加载其数据。或者重新创建表(使用正确的数据类型)并重新加载数据。I can reproduce that error with your code above. To remedy it, I have
ALTER
ed thebook_by_id
table with two new columns:My
BookEntity
class for those columns looks like this:The code to parse and set the date looks like this:
tl;dr;
Redefine
published_date
as aDATE
type, and it will work. Besides, dates/times should be stored in date/time types in databases.Note that Cassandra won't allow you to modify a column's data type. Also, the process of dropping and adding a column with the same name in quick succession has proven to be problematic with Cassandra in the past. I'd advise adding a newly named column of a
DATE
type, and reloading its data. Or recreate the table (with the correct data types) and reload the data.