Не найден конвертер, способный конвертировать из типа [java .util.LinkedHashMap ] печатать - PullRequest
1 голос
/ 17 января 2020

У меня есть такие документы в базе данных couchbase

{

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

, и у меня есть этот запрос, определенный в хранилище

@Query("UPDATE #{#n1ql.bucket} SET hostel.state = $2 where hostel.id=$1 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 = $2 where hostel.id=$1 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

1 Ответ

0 голосов
/ 17 января 2020

Согласно Данные пружины: запрос на изменение

Можно указать следующие типы возврата:

  • void

  • int (число обновленных записей)

  • логическое значение (была ли обновлена ​​запись)

In в вашем случае у вас есть тип возврата Hostel, что не хорошо, если вы используете SpringData. Spring не может преобразовать результат выполнения запроса в тип Hostel. Попробуйте использовать один из типов, указанных ранее

...