gpt4 book ai didi

Java Couchbase JsonArray 不支持的类型

转载 作者:行者123 更新时间:2023-12-01 18:09:14 26 4
gpt4 key购买 nike

当我尝试从 CouchBase 获取对象时遇到异常。我使用 Spring Data Repository 来查询数据。我将数据保存到 CouchBase,没有任何异常。我需要按 dataTime 查询数据,该数据应在 dateBeforedateAfter 范围内。我有这样的Java对象:

@Document
public class DataObject{

@Id
@Field
private String dataId;
@Field
private boolean isEnabled;
@Field
private BigDecimal price;
@Field
private LocalDateTime dataTime;
@Field
private Currency currency;

public DataObject() {
}

public DataObject(String dataId, boolean isEnabled, BigDecimal price, Date dataTime, Currency currency) {
this.dataId = dataId;
this.dataId = dataId;
this.price = price;
this.dataTime = dataTime;
this.currency = currency;
}
}

我有这样的存储库接口(interface):

public interface DataObjectRepository extends CrudRepository<DataObject, String> {

@Query("#{#n1ql.selectEntity} WHERE dataTime BETWEEN $1 AND $2 AND #{#n1ql.filter}")
List<DataObject> getDataObjectsBetweenDates(LocalDateTime beforeTime, LocalDateTime afterTime);

}

当我运行此查询时,出现异常:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Unsupported type for JsonArray: class java.time.LocalDateTime

我尝试使用Timestamp,旧日期而不是LocalDateTime,但是我得到了相同的异常,但消息中的类不同。

我是 CouchBase 的新手,因此非常感谢您的帮助

最佳答案

您遇到此异常,因为 couchbase java 客户端尝试将您的 beforeTime 添加到参数数组,但无法执行此操作。 LocalDateTime 不是受支持的类型,并且不满足客户端内部的此检查:

public static boolean checkType(Object item) {
return item == null
|| item instanceof String
|| item instanceof Integer
|| item instanceof Long
|| item instanceof Double
|| item instanceof Boolean
|| item instanceof BigInteger
|| item instanceof BigDecimal
|| item instanceof JsonObject
|| item instanceof JsonArray;
}

当您将 LocalDateTime 保存到 couchbase 时,spring 会将其转换为 Long :

Date.from(source.atZone(systemDefault()).toInstant()).getTime();

因此,您还可以使用此方法转换日期并发送 Long 参数而不是 LocalDateTime

关于Java Couchbase JsonArray 不支持的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42081893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com