注: Scala で Java クライアントを使用しています。case class
注釈が若干異なります。私は次のPOJOを持っています:
case class User(
@(JsonProperty@field)("guid")
@(RiakKey@field)
val guid: String,
@(JsonProperty@field)("email")
@(JsonSerialize@field)(using=classOf[util.serialization.StringToUrlSerializer])
@(JsonDeserialize@field)(using=classOf[util.serialization.StringToUrlDeserializer])
@(RiakIndex@field)(name = "email")
val email: String,
@(JsonProperty@field)("passwordHash")
val passwordHash: String
)
突然、Riak は私のUser
. REST クライアント経由で未加工の HTTP API を使用する場合は、セカンダリ インデックスを手動で作成することもできますが、コードでは失敗する理由を説明できません。
Riak オブジェクトを保存する方法は次のとおりです。
/**
* Riak database operations
*/
val bucketName = "accounts-user"
val bucket = DB.client.createBucket(bucketName).enableForSearch().execute()
val converter = {
val c = new JSONConverter[User](classOf[User], bucketName)
c.getObjectMapper().registerModule(DefaultScalaModule)
c
}
def store(o: User) = bucket.store(o).withConverter(converter).withRetrier(DB.retrier).execute()
使用している Jackson インポートは次のとおりです。
import com.fasterxml.jackson.annotation._
import com.fasterxml.jackson.databind.annotation._
import com.fasterxml.jackson.module.scala._
オブジェクトは正常に保存されており、エラーはスローされていません。問題の原因は何ですか? DefaultScalaModule
for Jackson はアノテーションに干渉する可能性がありますか? 参考までに、カスタム コンバーターを削除しようとしましたが、問題は解決しませんでした (ただし、Scala モジュールのインポートは削除されませんでした)。ありがとう。
編集
関連する可能性があります: 最近、NGINX 経由で Riak のプロキシを開始しました。HTTP と TCP の両方を行う必要がありますproxy_pass
か?