首页 文章

Java Couchbase JsonArray不支持的类型

提问于
浏览
3

当我试图从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;
    }
}

我有这样的存储库接口:

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 回答

  • 0

    你有这个例外,因为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时,将其转换为 Long

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

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

相关问题