播放2.3 Jongo ObjectId到自定义ID

时间:2015-10-05 16:41:50

标签: mongodb scala playframework jackson jongo

我在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"))

保存一些用户时

我在我的数据库中有以下内容:

{ 
    "_id" : { "$oid" : "5612a4effa93746a877c0d5c"} , 
    "id" : "uuid", 
    "name": "user name"
}

如果需要的结果是字符串值_id,它会映射到scala类中的id属性:

{ 
    "_id" : "uuid", 
    "name": "user name"
}

当我将我的scala案例类转换为Java POJO(下面的简单示例)时,一切正常。在这种情况下,我得到所需的结果。

public class User {
    @Id
    public String id;
    public String name;
}

我做错了什么?如何让jackson / jongo正确理解@Id注释?

other SO answers中有建议使用@Id注释 - 我使用它 - 但没有成功。

1 个答案:

答案 0 :(得分:0)

所以RTFM规则毕竟是值得的。在play-jongo readme处声明,将Jackson Module Scala依赖项添加到项目并配置映射器就足够了。

将依赖项添加到build.sbt

"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.6.1",

application.conf

中配置mapper
playjongo.mapperfactory="uk.co.panaxiom.playjongo.JongoScalaMapperFactory"