当我试图从CouchBase获取对象时,我得到一个异常 . 我使用Spring Data Repository来查询数据 . 我将数据保存到CouchBase,没有任何例外 . 我需要通过 dataTime
查询数据,该数据应该在 dateBefore
和 dateAfter
范围内 . 我有这样的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;
}
}
我有这样的存储库接口:
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:请求处理失败;嵌套异常是java.lang.IllegalArgumentException:JsonArray不支持的类型:class java.time.LocalDateTime
我尝试使用 Timestamp
,旧日期而不是 LocalDateTime
,但是我得到了相同的异常,但消息中有不同的类 .
我是CouchBase的新手,所以任何帮助都表示赞赏
1 回答
你有这个例外,因为couchbase java客户端试图将你的
beforeTime
添加到参数数组,但不能这样做 .LocalDateTime
不支持类型,并且不满足客户端内部的此检查:当您将
LocalDateTime
保存到couchbase时,将其转换为Long
:因此,您也可以使用此方法转换日期并发送
Long
参数而不是LocalDateTime