找不到能够从类型 [java.util.LinkedHashMap<?, ?>] 转换为类型的转换器

No converter found capable of converting from type [java.util.LinkedHashMap<?, ?>] to type

我在 couchbase 数据库中有这样的文档

{

  "hostel": {
    "city": {}
    ...
  }
}

我在存储库中定义了这个查询

@Query("UPDATE #{#n1ql.bucket} SET hostel.state =  where hostel.id= RETURNING #{#n1ql.bucket}.hostel    ")
Hostel update(String entityId, String newState);

但是当我 运行 它时,我得到了这个错误:

org.springframework.core.convert.ConverterNotFoundException: 
No converter found capable of converting from type [java.util.LinkedHashMap<?, ?>] to type [com.model.Hostel]

旅舍类型:

@Data
@Builder
@AllArgsConstructor
@JsonInclude(NON_NULL)
@EqualsAndHashCode
public class Hostel {

    private @NotNull String id;
    private @NotNull String city;
    private JsonObject commodities;
}

我也试过:

@Query("UPDATE #{#n1ql.bucket} SET hostel.state =  where hostel.id= RETURNING #{#n1ql.bucket}.hostel    ")
void update(String entityId, String newState);

但是我得到了错误:

org.springframework.data.couchbase.core.CouchbaseQueryExecutionException: Query returning a primitive type are expected to return exactly 1 result, got 0

根据Spring Data: Modifying Query

You can specify the following return types:

  • void

  • int (updated record count)

  • boolean(whether a record was updated)

在您的情况下,您有 return 类型 Hostel 如果您使用 SpringData,则有什么不好。 Spring 无法将查询执行的结果转换为 Hostel 类型。 尝试使用之前指定的类型之一