【问题标题】:Play 2.3 Jongo ObjectId to custom ID播放 2.3 Jongo ObjectId 到自定义 ID
【发布时间】:2015-10-05 16:41:49
【问题描述】:

我使用 Play 2.3 scala 和 play-jongo:

"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 注释 - 我使用它 - 没有成功。

【问题讨论】:

    标签: mongodb scala playframework jackson jongo


    【解决方案1】:

    所以 RTFM 规则毕竟是有回报的。在play-jongo readme有说明,在项目中添加Jackson Module Scala依赖并配置mapper就足够了。

    添加对build.sbt的依赖:

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

    application.conf中配置映射器

    playjongo.mapperfactory="uk.co.panaxiom.playjongo.JongoScalaMapperFactory"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2013-06-22
      • 1970-01-01
      相关资源
      最近更新 更多