DatastoreException: у данного ключа нет значения имени строки, но была предпринята попытка преобразования в строку - PullRequest
1 голос
/ 23 апреля 2020

Изменен тип @Id с Long на String в хранилище данных GCP с использованием пружины java Репозиторий.

DatastoreDataException
org.springframework.cloud.gcp.data.datastore.core.mapping.DatastoreDataException: The given key doesn't have a String name value but a conversion to String was attempted

1 Ответ

0 голосов
/ 24 апреля 2020

Таким образом, ключи в хранилище данных могут иметь либо свойство id, которое является числом, либо свойство name, которое является строкой.

Я включил 2 снимка экрана примера каждого

* 1006. * Numeri c id: enter image description here

String name: enter image description here

Итак, когда вы говорите это:

Изменен тип @Id с Long на String в хранилище данных GCP с использованием пружины java Репозиторий.

Что вы на самом деле делали?

Звучит как будто вы только что изменили определение модели в вашем ORM. Это на самом деле не меняет ничего, уже хранящегося в хранилище данных, а только влияет на новые объекты в будущем. Похоже, вы выбираете сущности с id с, но ваше определение модели ожидает, что они будут иметь name с.

Вы должны иметь какое-то задание по переносу данных, чтобы преобразовать их во все , Преобразование - даже не правильное слово, поскольку изменение ключа для использования name просто создаст новую сущность. В этом процессе вам придется удалить старые сущности, которые используют id.

Вам также придется обновить все остальные сущности, которые имеют ключевые свойства, к этому виду.

...