无法在Scalatra中获取JSON响应(使用JPA for ORM)

时间:2015-07-28 00:47:16

标签: json scala jpa scalatra

我在Scalatra中使用JPA进行数据建模。我有一个数据模型,其中一个类中有一个变量作为另一个类的对象,该类又有一个不同类的对象列表(传递关系)。这三个类如图所示 -

实体XXX

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = “xxx_table")
class XXX(
     ...

    @(OneToOne @field)(fetch=FetchType.LAZY)
    @(JoinColumn @field)(name=“xxx_id_2")
    var yyy: YYY,

     ...

    ) extends AuditableEntity {
    def this() = this(null, -1, null)
}

实体YYY

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Table(name = “yyy_table")
class SomeSchema extends AuditableEntity {
     ...

    @OneToMany(fetch=FetchType.EAGER, cascade = Array(CascadeType.ALL))
    @JoinColumn(name=“xxx_id_3")
    @OrderBy("position ASC")
    @JoinFetch
    var objectTypes: java.util.List[ZZZ] = _
}

实体ZZZ

@Entity
@Table(name = “zzz_table")
class ZZZ(
    @(Id @field)
    @(ManyToOne @field)
    @(JoinColumn @field)(name=“zzz_")
    @Column(updatable = false)
    var xxx: XXX,

    …

    @(Column @field)(name = "object_type")
    var objectType: String) {

    def this() = this(null, -1, null)
 }

当我有一个XXX的对象并使用Jackson将其转换为JSON时,我看到我只获取了XXX中除变量yyy之外的所有变量的JSON内容。我尝试将FetchType更改为EAGER,并尝试在JPA中执行JOIN FETCH操作 -

SELECT ds FROM XXX ds JOIN FETCH ds.yyy

当我调试并查看ds变量时,我发现它具有我需要的所有层次结构内容;但是,当转换为JSON时,变量yyy的内容为空。你能否建议我在哪里解决这个问题?

1 个答案:

答案 0 :(得分:0)

您使用json4s和Jackson方法吗?如果是,则可能必须为YY添加FieldSerializer,因为DefaultFormat不会正确转换为JSON。