【发布时间】:2014-02-17 08:49:49
【问题描述】:
Neo4j 服务器提供了一个处理 Json 格式的 REST api。 我使用 spring-data-neo4j 轻松地将域对象(在 Scala 中)映射到 neo4j 节点。 这是我的用户节点的示例:
@NodeEntity
class User(@Indexed @JsonProperty var id: UserId)
UserId 是一个值对象:
final case class UserId(value: String) {
override def toString = value
}
object UserId {
def validation(userId: String): ValidationNel[IllegalUserFailure, UserId] =
Option(userId).map(_.trim).filter(!_.isEmpty).map(userId => new UserId(userId)).toSuccess(NonEmptyList[IllegalUserFailure](EmptyId))
}
在运行时,我收到了这个错误:
Execution exception[[RuntimeException: org.codehaus.jackson.map.JsonMappingException: No serializer found for class com.myApp.domain.model.user.UserId and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: java.util.HashMap["value"])]]
然后,我在网上看到了这个小article,解释了一个解决方案。
我最终得到了这个User 类:
@NodeEntity
@JsonAutoDetect(Array(JsonMethod.NONE))
class User (@Indexed @JsonProperty var id: UserId)
我还尝试将@JsonProperty 放在UserId 值对象本身上,如下所示:
JsonAutoDetect(Array(JsonMethod.NONE))
final case class UserId(@JsonProperty value: String) {
override def toString = value
}
但我仍然得到完全相同的错误。
使用 Scala 的人是否已经遇到过这个问题?
【问题讨论】:
标签: scala serialization neo4j jackson spring-data-neo4j