현재 Salat에 문제가 있습니다. 너희들이 나를 도울 수 있기를 바라 라! 여기 Salat serialization 오류
은 나를 미치게되는 경우 클래스의 : 유형 의 인스턴스object UserDAO extends SalatDAO[User, ObjectId](
collection = DB("users") //Returns the "users" MongoCollection
)
case class User(
_id: ObjectId = new ObjectId,
firstName: String,
lastName: String,
screenName: String,
phoneNumber: PhoneNumber,
validated: Boolean = false)
PHONENUMBER됩니다 com.google.i18n.phonenumbers.Phonenumber $ PHONENUMBER
(나는 libphonenumber을 사용하고 있습니다) 이건 내 C가class PhoneNumberTransformer extends CustomTransformer[PhoneNumber, String] {
val phoneNumberUtils = PhoneNumberUtil.getInstance()
def deserialize(b: String) = phoneNumberUtils.parse(b, "UK")
def serialize(a: PhoneNumber) = phoneNumberUtils.format(a, PhoneNumberFormat.INTERNATIONAL)
}
입니다 :
이 내 사용자 정의 트랜스포머 ustom 상황 :
project java.lang.IllegalArgumentException: can't serialize class com.google.i18n.phonenumbers.Phonenumber$PhoneNumber
project at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:284)
project at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:185)
project at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:131)
project at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:33)
[...]
이 문제를 해결하는 방법에 대한 어떤 생각 :
package object model {
implicit val ctx = new Context {
val name = "Custom Salat Context"
}
ctx.registerCustomTransformer(new PhoneNumberTransformer)
}
내가 UserDAO를 사용하여 새 사용자 문서를 삽입하려고하면, 나는이 예외가? 감사합니다.
이 방법이 도움이되는지 모르겠지만'PhoneNumber'는 Java public static class입니다. –