前提
Kotlin SpringBoot + GoogleCloudDatastore
いろいろ検索しても本当に情報がでてこないので、だれにも求められていない情報なのではと思いつつ。。
キー検索したときに出たエラーと対処法をメモする。
エラーメッセージ
普通に検索してエラー
<< コード >>
return ObjectifyService.ofy()
.load()
.type(HogeCloudDatastoreEntity::class.java)
.filter("id = ", id))
.first()
.now()
.toDomain()
<< エラー >>
java.lang.IllegalArgumentException: @Id fields cannot be filtered on. Perhaps you wish to use filterKey() instead?
filterKeyを使ってエラー
<< コード >>
return ObjectifyService.ofy()
.load()
.type(HogeCloudDatastoreEntity::class.java)
.filterKey(id)
.first()
.now()
.toDomain()
<< エラー >>
com.google.appengine.repackaged.com.google.datastore.v1.client.DatastoreException: __key__ filter value must be a Key
正解
return ObjectifyService.ofy()
.load()
.type(HogeCloudDatastoreEntity::class.java)
.filterKey(Key.create(HogeCloudDatastoreEntity::class.java, id)
.first()
.now()
.toDomain()