私は play-jongo で Play 2.3 scala を使用しています:
"uk.co.panaxiom" %% "play-jongo" % "0.7.1-jongo1.0"
私はscalaケースクラスを持っています:
import org.jongo.marshall.jackson.oid.Id
case class User(@Id id: String, name: String)
Jongoを使用してユーザーを保存するとPlayJongo.getCollection("users").save(User("uuid","user name"))
私のDBには以下があります:
{
"_id" : { "$oid" : "5612a4effa93746a877c0d5c"} ,
"id" : "uuid",
"name": "user name"
}
必要な結果が、scala クラスの属性に_id
マップされる文字列値を持つ場合:id
{
"_id" : "uuid",
"name": "user name"
}
scala ケース クラスを Java POJO にすると、すべてが正常に機能します (以下の簡単な例)。この場合、必要な結果が得られます。
public class User {
@Id
public String id;
public String name;
}
私は何を間違っていますか?@Id
ジャクソン/ジョンゴにその注釈を正しく理解させるにはどうすればよいですか?
他のSOの回答には、私が使用するアノテーションを使用する提案がありますが、@Id
成功しません。